第一种方法: 可以用select @@IDENTITY sql语句,不过他只对本连接刚刚递交的insert语句返回结果,否则返回0,具体写法如下: Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); st.executeUpdate("insert into yourtable(col1) values('hello')"); ResultSet rs=st.executeQuery("select @@IDENTITY as id"); int id=0; if(rs.next()){ id=rs.getInt("id"); } 这样就可以得到刚刚插入记录的自增id,不过如果用PreparedStatement或者ResultSet的insertRow()返回的是0
第二种方法: 还可以用Statement.RETURN_GENERATED_KEYS(小黑猪和小白猪用的是这一种) public static PreparedStatement getPstmt(Connection conn,String sql,Object[] params) { ??PreparedStatement pstmt = null; ??if(sql != null && !sql.equals("")) { ???if(params == null) { ????params = new Object[0]; ???} ???try { ????pstmt = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); ????for(int i=0;i<params.length;i++) { ?????pstmt.setObject((i+1),params[i]); ????} ????pstmt.execute(); ???} catch (SQLException e) { ????e.printStackTrace(); ???} ??} ??return pstmt; ?}
public static ResultSet getRsId(PreparedStatement pstmt) throws SQLException { ??return pstmt.getGeneratedKeys(); ?} 就是这样……嘿嘿……
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|