从上个学期开始,就打算学习用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!了,可是数据库里面的数据没有变动,是为什么呢?
//-----------------------------------------------------
}
}