按照它的说明 主键是这样得到的!
ResultSet rs = stmt.getGeneratedKeys();
int key = rs.getInt()但是 我用mysql来做 在int key = rs.getInt()这里是 异常的,得不到!现在我想可能是我得jdbc不是3.0的,
请问大哥 mysql jdbc3.0 到底是什么啊?
是不是mysql 发布的最新的 mysql-connector-java-5.0.0-beta 这个呢?

解决方案 »

  1.   

    rs没有调用next()方法
    ResultSet rs = stmt.getGeneratedKeys();
    rs.next();
    int key = rs.getInt(1)
      

  2.   

    问题解决!看了看 mysql 的doc 我把我的代码写出来给大家分享
    import java.sql.*;public class GetKey {
    ResultSet rs = null;
    Connection conn = null;
    Statement stmt=null;
    //加入同一个连接发生其他查询,Key会被重写所以不准确
    public void getId(){
    try{
    getConnect gc=new getConnect();
    conn=gc.getconn();
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("insert into tb (name) values ('Key')");
     rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");
     int autoIncKeyFromFunc = -1;
    if ( rs.next() ) {
    autoIncKeyFromFunc = rs.getInt(1);
        System.out.println("autoIncKeyFromFunc: "+autoIncKeyFromFunc);
        }
    }catch(Exception e){
    System.out.print("有异常发生!");
    }
    }

    public void getId_(){
    try{
    getConnect gc=new getConnect();
    conn=gc.getconn();
     stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                         java.sql.ResultSet.CONCUR_UPDATABLE);
     stmt.executeUpdate("insert into tb (name) values ('x')");
     int autoIncKeyFromApi = -1;
     rs = stmt.getGeneratedKeys();
     if (rs.next()) {
            autoIncKeyFromApi = rs.getInt(1);
     System.out.println("Key returned from getGeneratedKeys():"
            + autoIncKeyFromApi);
     }
    }catch(Exception e){
    System.out.print("有异常发生!");
    }
    }

    public static void main(String[] args) {
         GetKey get=new GetKey();
        // get.getId();
          get.getId_();
    }}