代码:
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反而会报错。不知道为什么。
   神哪,救救我吧

解决方案 »

  1.   


    psm.executeQuery()
    改成
    psm.execute()
      

  2.   

    按你的
    会报错
    D:\Tomcat 5.0\work\Catalina\localhost\Register\org\apache\jsp\do_005fregister_jsp.java:99: incompatible types
    found   : boolean
    required: java.sql.ResultSet
    rs = psm.execute();
                            ^
    1 error
      

  3.   

    rs = psm.execute();
    改成
    psm.execute();
      

  4.   

    response.sendRedirect("index.jsp");
    后面加上
    return;
      

  5.   

    你的rs指的是结果集,结果集是用来接收查询返回的结果,你的插入操作没有返回值,所以就不能赋给rs,所以会报空指针错误
      

  6.   

    psm.executeQuery();--->psm.executeUpdate();
    try:)
      

  7.   

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    这个可能不对,驱动程序有吗?
    在CLASSPATH 和 WEB-INF 下都应该有
      

  8.   

    psm.executeQuery();
    改成
    psm.executeUpdate()
      

  9.   

    驱动有。WEB-INF 下有,而且版本也匹配。但是在classpath下面怎么有,我的环境变量设置的classpath是.;C:\j2sdk1.4.2_14\lib\dt.jar;C:\j2sdk1.4.2_14\lib\tools.jar,那我应该把驱动文件复制到哪里?我的建站工具是eclipse+lomboz
      

  10.   

    老大门。不管是改成executeQuery,还是executeUpdate还是execute我都改了。都不起作用
      

  11.   

    驱动  要放一份到 CLASSPATH 中去最好的方法是DEBUG
      

  12.   

    不知道DEBUG是么东东,怎么操作?是设置断点吗?
      

  13.   

    if(rs!=null){
        try{ rs.close();}catch(Exception e){e.printStackTrace();}
      }
    把这一段话去掉看一下
      

  14.   

    不知道怎么在JSP里面设置断点了,但是我通过输出查错了,发现代码就是卡在psm.executeQuery();那句.才导致下面的设定session和页面重置无法执行
      

  15.   

    "jdbc:mysql://localhost/mydb";端口号在哪儿?
      

  16.   

    psm.setLong(5,getDate(date));为什么要在dao这层做啊.这层只帮数据库操作啊.
    你是不是业务逻辑层把是util.date类,后来你要改成sql.date. 你应该在前面做转变后再传进来.但这个不是问题...
    ps=psm.executeQuery();才可以获得结果集啊...看你上面的代码怎么没写呢..不清楚你改了后是否好了.
      

  17.   

    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();否则那不是更新语句。
    多看看书,多运行运行,你会明白了。
      

  18.   

    非常感谢各位的支持..
    我的问题已经解决了,虽然不是在各位的提示下解决的,但我还是感谢大家我终于查出问题,我在苦熬了多天之后,发现既然运行不成功,也不打印捕出的异常,我一气之下把代码的errorPage="error.jsp",try{}catch{}finaly{}全部去掉.我终于看到了全部的报错,我全部看懂了,这个问题是因为数据库里的sex字段长度我设的太短了,是因为我是按照教材来设置的,垃圾教材真是害人啊,第二个问题,我没有在CSDN查出来,是因为垃圾教材把数据库的USER_ID,却在代码写USERID...垃圾教材啊,可怜人,因为一个人自学攻克JSP,出些简单的问题都解决不了.这次还是运气好.把所有的错误处理的代码全部去掉了才弄清楚感谢大家