小弟的目的就是在插入一个记录后,能够把数据库里一个自增字段(就是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)

解决方案 »

  1.   

    sql采用这种方式
    insert into orderform (col1,col2,col3) values(?,?,?)
      

  2.   

    楼上的我用的是SQL2005,是可以的,不一定非要用INTO!不信你可以自己试一下!
      

  3.   

    你的 orderform只有 3个 字段 ?你确定sql2005能这样写?
    他意思是教你写成insert orderform 字段1,字段2,字段3 values (?,?,?)的形式
    你要insert的字段都没写
    他说你sql语句不对
    你断点看看最后运行的sql是什么样子的
      

  4.   

    insertorder=conn.prepareStatement("insert orderform values(?,?,?)");
    这样试试. 
      

  5.   

    我只有三个字段,一个自增自段,我确定是可以象我这样写的,在数据库里验证过,不信你们可以试试;上面那位朋友如果我象你那么试的话也会有问题,就是不能取出数据库自增的那个字段,
    这里就会报错rsorder=insertorder.getGeneratedKeys(); 
    相当于说这里就取不了值!感谢各位的回复,但是问题还是没有解决,忘大侠们指教!
      

  6.   

    insertorder=conn.prepareStatement("insert orderform values(?,?,?)",PreparedStatement.RETURN_GENERATED_KEYS); 很明显,你用的驱动是2.0的老驱动,他并没有实现这个功能,你还3.0的驱动吧就是 sqljdbc.jar 这个!
      

  7.   

    http://www.java2000.net/download/jar/sqljdbc.jar
      

  8.   

    楼上的大哥,我数据库用的是SQL2005
    驱动确实是2000的JDBC驱动,
    3.0的在那里下啊,大哥你提供的连接下到最后就下不了了!!
      

  9.   

    http://download.csdn.net/source/494959
      

  10.   

    在写mysql语句时,insert orderform values(?,?,?)",
    values后面好像要加一个空格,不知道在sqlserver用不用的
    应该是六楼紫竹前辈说的那个问题
      

  11.   

    问题找到了,就是紫竹大哥说的问题!换成JDBC3.0就行了!