请问在jdbc中如何获取最后插入的标识列 我想把这个标识列 作为商品编号插入到订货表中代码如下
String sql="insert into stores (GoodsName,GoodsTypeID,GoodsNum,describe,purchasePrice,SellPrice,KcUnit)values('薯片',16,100,'质量不错',20,38,'箱')";请问 如何在jdbc 中获取 我知道用 @@indentity 但是不知道如何获取这个标识列值请各位大虾指点谢谢

解决方案 »

  1.   

    PreparedStatement pstmt = conn.prepareStatement(String sql, Statement.RETURN_GENERATED_KEYS);
    ...pstmt.execute();
    ResultSet rs = pstmt.getGeneratedKeys();
    //然后获取就可以, 
      

  2.   

    public static void main(String[] args) throws Exception{
    String sql = "select * from yz_admin";
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/tour?useUnicode=true&characterEncoding=UTF-8", "root", "root");
    PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); 
    pstmt.execute(); 
    ResultSet rs = pstmt.getGeneratedKeys(); 

            while(rs.next()){
             System.out.println(rs.getInt(1));
            }
    }这样获取不到啊.
      

  3.   

    public static void main(String[] args) throws Exception{
    String sql = "insert into yz_admin values(101, 'a', 'a', 1, 1, 'a', 'a')";
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/tour?useUnicode=true&characterEncoding=UTF-8", "root", "root");
    PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
    pstmt.executeUpdate(sql); 
    pstmt.executeQuery("SELECT last_insert_id()");
    ResultSet rs = pstmt.getGeneratedKeys(); 

            while(rs.next()){
             System.out.println(rs.getString(1));
            }
    }
      

  4.   


    private Connection con=null;
    private PreparedStatement ps=null;
    private ResultSet rs=null;
    int key=0;
    public int addUser(UserInfo u) {
    // TODO Auto-generated method stub
    String sql="insert into users values(null,?,?,1,1)";

    try {
    con=ConnectionManager.getConn();
    ps=con.prepareStatement(sql);
    ps.setString(1, u.getName());
    ps.setString(2, u.getPass());
    ps.executeUpdate();

    rs=ps.executeQuery("select @@identity");

    if(rs.next()){
    key=rs.getInt(1);
    }


    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally{
    ConnectionManager.closeAll(rs, ps, con);
    }

    return key;
    }
      

  5.   

        private Connection con=null;
        private PreparedStatement ps=null;
        private ResultSet rs=null;
        int key=0;
    public int addUser(UserInfo u) {
            // TODO Auto-generated method stub
            String sql="insert into users values(null,?,?,1,1)";
            
            try {
                con=ConnectionManager.getConn();
                ps=con.prepareStatement(sql);
                ps.setString(1, u.getName());
                ps.setString(2, u.getPass());
                ps.executeUpdate();
                
                rs=ps.executeQuery("select @@identity");
                
                if(rs.next()){
                    key=rs.getInt(1);
                }
                
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally{
                ConnectionManager.closeAll(rs, ps, con);
            }
            
            return key;
        }