日期:2014-05-18  浏览次数:20694 次

无法写入数据库
代码:
Connection   con   =   null;
PreparedStatement   psm   =   null;
ResultSet   rs   =   null;
try
{
        Class.forName( "com.mysql.jdbc.Driver ").newInstance();
        String   url   =   "jdbc:mysql://localhost/mydb ";
        con   =   DriverManager.getConnection(url, "root ", "dolove ");
       
        psm   =   con.prepareStatement( "insert   into   users   values(?,?,?,?,?,?) ");
        psm.setString(1,ID);
psm.setString(2,password);
psm.setString(3,name);
psm.setString(4,sex);
psm.setLong(5,getDate(date));
psm.setString(6,description);
psm.executeQuery();
 
session.setAttribute( "user ",ID);
response.sendRedirect( "index.jsp ");
}
catch(Exception   e){
      e.printStackTrace();
}
  finally
  {
          if(rs!=null){
        try{   rs.close();}catch(Exception   e){e.printStackTrace();}
    }
          if(psm!=null){
        try{   psm.close();}catch(Exception   e){e.printStackTrace();}
    }  
    if(con!=null){
        try{   con.close();}catch(Exception   e){e.printStackTrace();}
    }  
}
那5个参数的接受是正常的。但是执行之后,数据库里是空的。而有页面也不跳转,也没有打印任何捕获的异常,另外我是刚学,对PreparedStatement的定义和使用一点都不熟悉,这句psm   =   con.prepareStatement( "insert   into   users   values(?,?,?,?,?,?) ");,如果我把prepareStatement写成PreparedStatement反而会报错。不知道为什么。
      神哪,救救我吧

------解决方案--------------------
你的rs指的是结果集,结果集是用来接收查询返回的结果,你的插入操作没有返回值,所以就不能赋给rs,所以会报空指针错误
------解决方案--------------------
psm.setLong(5,getDate(date));为什么要在dao这层做啊.这层只帮数据库操作啊.
你是不是业务逻辑层把是util.date类,后来你要改成sql.date. 你应该在前面做转变后再传进来.但这个不是问题...
ps=psm.executeQuery();才可以获得结果集啊...看你上面的代码怎么没写呢..不清楚你改了后是否好了.
------解决方案--------------------
mysql: driver:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306/数据库名
sqlserver: 桥连:driver: sun.jdbc.odbc.JdbcOdbcDriver
url:jdbc:odbc:数据库名
直连:driver:com.microsoft.jdbc.sqlserver.SQLServerDriver
url:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名
看一下你的存储过程是否正确,
import java.sql.*;有没有这句
数据库驱动是否已放入服务器的类包中(如:tomcat是放在/common/lib里面)
还有你的psm.executeQuery();一定要改成psm.executeUpdate();否则那不是更新语句。
多看看书,多运行运行,你会明白了。