大侠们来看看这到底是什么问题!!先谢谢诸位了!!

hys21 2008-06-12 09:48:19
小弟的目的就是在插入一个记录后,能够把数据库里一个自增字段(就是ID号字段)的值取出来,但是报错报在红色字的这一行
请问各位大侠到底是那里错了呢?
注:数据库这边是没问题的类型都是对应的.
PreparedStatement insertorder;
insertorder=conn.prepareStatement("insert orderform values(?,?,?)",PreparedStatement.RETURN_GENERATED_KEYS);
insertorder.setString(1, username);
insertorder.setString(2, ordertime);
insertorder.setInt(3, 0);
insertorder.executeUpdate();
rsorder=insertorder.getGeneratedKeys();
rsorder.next();
orderid=rsorder.getInt(1);






严重: Servlet.service() for servlet order threw exception
java.lang.AbstractMethodError: com.microsoft.jdbc.sqlserver.SQLServerConnection.prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;
at javabean.Orderbean.orderform(Orderbean.java:43)
at servlet.Order.doPost(Order.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Unknown Source)
...全文
151 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hys21 2008-06-14
  • 打赏
  • 举报
回复
问题找到了,就是紫竹大哥说的问题!换成JDBC3.0就行了!
hys21 2008-06-13
  • 打赏
  • 举报
回复
楼上的大哥,我数据库用的是SQL2005
驱动确实是2000的JDBC驱动,
3.0的在那里下啊,大哥你提供的连接下到最后就下不了了!!
老紫竹 2008-06-13
  • 打赏
  • 举报
回复
insertorder=conn.prepareStatement("insert orderform values(?,?,?)",PreparedStatement.RETURN_GENERATED_KEYS);

很明显,你用的驱动是2.0的老驱动,他并没有实现这个功能,你还3.0的驱动吧

就是 sqljdbc.jar 这个!
Sam_Deep_Thinking 2008-06-13
  • 打赏
  • 举报
回复
在写mysql语句时,insert orderform values(?,?,?)",
values后面好像要加一个空格,不知道在sqlserver用不用的


应该是六楼紫竹前辈说的那个问题
xql80329 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hys21 的回复:]
楼上的大哥,我数据库用的是SQL2005
驱动确实是2000的JDBC驱动,
3.0的在那里下啊,大哥你提供的连接下到最后就下不了了!!
[/Quote]
baidu一下吧
sagezk 2008-06-13
  • 打赏
  • 举报
回复
hys21 2008-06-13
  • 打赏
  • 举报
回复
我只有三个字段,一个自增自段,我确定是可以象我这样写的,在数据库里验证过,不信你们可以试试;

上面那位朋友如果我象你那么试的话也会有问题,就是不能取出数据库自增的那个字段,
这里就会报错rsorder=insertorder.getGeneratedKeys();
相当于说这里就取不了值!

感谢各位的回复,但是问题还是没有解决,忘大侠们指教!
ilrxx 2008-06-12
  • 打赏
  • 举报
回复
insertorder=conn.prepareStatement("insert orderform values(?,?,?)");
这样试试.
yami251139 2008-06-12
  • 打赏
  • 举报
回复
你的 orderform只有 3个 字段 ?你确定sql2005能这样写?
他意思是教你写成insert orderform 字段1,字段2,字段3 values (?,?,?)的形式
你要insert的字段都没写
他说你sql语句不对
你断点看看最后运行的sql是什么样子的。。。
hys21 2008-06-12
  • 打赏
  • 举报
回复
楼上的我用的是SQL2005,是可以的,不一定非要用INTO!不信你可以自己试一下!
zhj92lxs 2008-06-12
  • 打赏
  • 举报
回复
sql采用这种方式
insert into orderform (col1,col2,col3) values(?,?,?)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧