SQLServer2000 插入数据后或得其ID值

第一种方法:
可以用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();
 }
就是这样……嘿嘿……

你可能感兴趣的:(数据库,id,insert,sqlserver2000,into)