加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer2000 插入数据后或得其ID值

发布时间:2020-12-12 15:13:05 所属栏目:MsSql教程 来源:网络整理
导读:第一种方法: 可以用select @@IDENTITY sql语句,不过他只对本连接刚刚递交的insert语句返回结果,否则返回0,具体写法如下: Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); st.executeUpdate("insert into y

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读