从上个学期开始,就打算学习用jsp来连接数据库了,想在页面上提交的数据加入到数据库中,并且可以修改数据库。

 

但是后来,数据库连接上了,数据查询了,就是没有数据更改,哎,郁闷啊,自己一个人试了很久,就是不行。

 

终于忍不住,求助了一个同学,才解决了!心情好,第一篇文章就写这个了,呵呵

 

下面是两段代码

import java.sql.*; 
import java.io.*;
public class DBUtil 
{ 
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
String sConnStr = "jdbc:odbc:test";   //数据源,test,驱动是access 数据库驱动
Connection conn = null; //Connection对象代表与数据库的连接。
ResultSet rs = null; public DBUtil() 
{ 
try 
{ 
Class.forName(sDBDriver);   
} 
catch(java.lang.ClassNotFoundException e) 
{ 
System.err.println("testJDBC(): " + e.getMessage()); 
} 
} public ResultSet executeQuery(String testJDBC) 
{ 
rs = null; 
try 
{


conn = DriverManager.getConnection(sConnStr); //DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。

Statement stmt = conn.createStatement(); // Statement 对象用于将 SQL 语句发送到数据库中。
rs = stmt.executeQuery(testJDBC); //testJDBC,这是什么?见上面的参数
} 
catch(SQLException ex) 
{ 
System.err.println("aq.executeQuery: " + ex.getMessage()); 
} 
return rs;  
} public boolean exesql(String sqlstr)  //执行无返回的sql语句
{
  try
   {
     conn = DriverManager.getConnection(sConnStr); 
     Statement stmt = conn.createStatement();
    stmt.executeUpdate(sqlstr);   //执行给定的 SQL 语句,该语句可能返回多个结果。
    System.out.println("OK!");   //如果执行了上面的语句,就打印OK!
       return true;
   }
   catch(Exception e)
   {    
    System.out.println(e.toString());
    return false;
   }}
public static void main(String[] args) throws SQLException ,IOException
{
    DBUtil dbu=new DBUtil();
 
    String str_name;
    String str_gender;
    
   //---------------------------------------------------------   这部分对数据库进行查询,有结果的,数据库连接上了。
    ResultSet rs = dbu.executeQuery("select * from testinfo");  
    while(rs.next())
    {
        str_name = rs.getString("name");  
        str_gender= rs.getString("gender");
        System.out.println("从数据库中取出数据:::");
        System.out.println("name is:"+str_name);
        System.out.println("gender is:"+str_gender);
    } 
  //----------------------------------------------------------------  
    
   
    //-----------------------------------------------------下面的语句执行了,但是表里面没有改动啊 !
     String genderone="female"; 
     String newname="jack";
     String ssql="update testinfo set gender='"+genderone+"' where name='"+newname+"'";  //没结果
     dbu.exesql(ssql);   //函数体里面都OK!了,可是数据库里面的数据没有变动,是为什么呢?
    //-----------------------------------------------------
    
   }
}

 

下面是修改了后的代码,可以通过了,哎,就是两句话而已

 

import java.sql.*; 
import java.io.*;
public class DBUtil 
{ 
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
String sConnStr = "jdbc:odbc:test";   //数据源,test,驱动是access 数据库驱动
Connection conn = null; //Connection对象代表与数据库的连接。
ResultSet rs = null; public DBUtil() 
{ 
try 
{ 
Class.forName(sDBDriver);   
} 
catch(java.lang.ClassNotFoundException e) 
{ 
System.err.println("testJDBC(): " + e.getMessage()); 
} 
} public ResultSet executeQuery(String testJDBC) 
{ 
rs = null; 
try 
{


conn = DriverManager.getConnection(sConnStr); //DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。

Statement stmt = conn.createStatement(); // Statement 对象用于将 SQL 语句发送到数据库中。
rs = stmt.executeQuery(testJDBC); //testJDBC,这是什么?见上面的参数
} 
catch(SQLException ex) 
{ 
System.err.println("aq.executeQuery: " + ex.getMessage()); 
} 
return rs;  
} public boolean exesql(String sqlstr)  //执行无返回的sql语句
{
  try
   {
     conn = DriverManager.getConnection(sConnStr); 
     Statement stmt = conn.createStatement();
    stmt.executeUpdate(sqlstr);   //执行给定的 SQL 语句,该语句可能返回多个结果。
    System.out.println("OK!");   //如果执行了上面的语句,就打印OK!
    stmt.close();
   conn.close();    return true;
   }
   catch(Exception e)
   {    
    System.out.println(e.toString());
    return false;
   }}
public static void main(String[] args) throws SQLException ,IOException
{
    DBUtil dbu=new DBUtil();
 
    String str_name;
    String str_gender;
    
   //---------------------------------------------------------   这部分对数据库进行查询,有结果的,数据库连接上了。
    ResultSet rs = dbu.executeQuery("select * from testinfo");  
    while(rs.next())
    {
        str_name = rs.getString("name");  
        str_gender= rs.getString("gender");
        System.out.println("从数据库中取出数据:::");
        System.out.println("name is:"+str_name);
        System.out.println("gender is:"+str_gender);
    } 
  //----------------------------------------------------------------  
    
   
    //-----------------------------------------------------下面的语句执行了,但是表里面没有改动啊 !
     String genderone="female"; 
     String newname="jack";
     String ssql="update testinfo set gender='"+genderone+"' where name='"+newname+"'";  //没结果
     dbu.exesql(ssql);   //函数体里面都OK!了,可是数据库里面的数据没有变动,是为什么呢?
    //-----------------------------------------------------
    
   }
}