在外网买的空间,空间提供的数据库是MYSQL4.0
我使用.jsp文件插入数据,插入同时要获取自动生成的ID号
测试的插入代码如下:
String id = "sss";
String sql = "insert into web_test(id) values ('" + id + "')";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery(sql);测试时老是报错,错误代码如下
HTTP Status 500 - 
The server encountered an internal error () that prevented it from fulfilling this request.
javax.servlet.ServletException: ResultSet is from UPDATE. No Data
……
java.sql.SQLException: ResultSet is from UPDATE. No Data
……
请过往的高手指点一下,该如何改正

解决方案 »

  1.   

    executeQuery
    这个应该是executeUpdate吧?
    前者为查询,后者为插入。
      

  2.   

    是我没问清楚,
    改成executeUpdate()后,插入成功了,但不能获得数据库自动生成的ID号,请问有什么办法能解决
      

  3.   

    Statement smt = conn.getStatement();
    ...//省略中间操作
    ResultSet resultSet = smt.getGeneratedKeys();
    id = resultSet.getInt("GENERATED_KEY");
      

  4.   

    jdbc是无法获取到的!Hibernate是可以获取到的
      

  5.   

    当然了你用jdbc execute完可以再读一次也可以获取到.用Hibernate execute完会返回一个对象,ID就在对象内
      

  6.   

    呵呵,中间写少了一句
    Statement smt = conn.getStatement(); 
    ...//省略中间操作 
    ResultSet resultSet = smt.getGeneratedKeys(); 
    if(resultSet.next()){  //这里不能少
        id = resultSet.getInt("GENERATED_KEY"); 
    }
      

  7.   

    “用jdbc execute完可以再读一次也可以获取到”
    我插入的数据不具有唯一性,很可能会重复,有没有能读取最新插入的记录的方法
      

  8.   

    String id = "sss"; 
    String sql = "insert into web_test(id) values ('" + id + "')"; 
    Statement st = con.CreateStatement();
    int rs = st.executeUpdate(sql);
      

  9.   

    executeUpdate()的返回值是插入的条数,不是我想要的数据库自动生成的id号