代码:
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反而会报错。不知道为什么。
神哪,救救我吧
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反而会报错。不知道为什么。
神哪,救救我吧
psm.executeQuery()
改成
psm.execute()
会报错
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
改成
psm.execute();
后面加上
return;
try:)
这个可能不对,驱动程序有吗?
在CLASSPATH 和 WEB-INF 下都应该有
改成
psm.executeUpdate()
try{ rs.close();}catch(Exception e){e.printStackTrace();}
}
把这一段话去掉看一下
你是不是业务逻辑层把是util.date类,后来你要改成sql.date. 你应该在前面做转变后再传进来.但这个不是问题...
ps=psm.executeQuery();才可以获得结果集啊...看你上面的代码怎么没写呢..不清楚你改了后是否好了.
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();否则那不是更新语句。
多看看书,多运行运行,你会明白了。
我的问题已经解决了,虽然不是在各位的提示下解决的,但我还是感谢大家我终于查出问题,我在苦熬了多天之后,发现既然运行不成功,也不打印捕出的异常,我一气之下把代码的errorPage="error.jsp",try{}catch{}finaly{}全部去掉.我终于看到了全部的报错,我全部看懂了,这个问题是因为数据库里的sex字段长度我设的太短了,是因为我是按照教材来设置的,垃圾教材真是害人啊,第二个问题,我没有在CSDN查出来,是因为垃圾教材把数据库的USER_ID,却在代码写USERID...垃圾教材啊,可怜人,因为一个人自学攻克JSP,出些简单的问题都解决不了.这次还是运气好.把所有的错误处理的代码全部去掉了才弄清楚感谢大家