SQL Server2008的安装,SQLServer2008的安装......
2023-02-22 271 安装
最近小编收到很多问题,其中一个就是下面小编为大家整理一下关于JDBC添加后怎么返回主键的步骤,希望这些方法能够帮助到大家。
首先,在插入语句后添加一条查询,利用resultset来得到id号,psmt = con.prepareStatement
("insert into orders (receiver,address,telephone,total,detailnum,userid)values(?,?,?,?,?,?);select
@@identity");psmt.setString(1, order.getReceiver()); ……
results = psmt.executeQuery(); if(results.next())
{ num = results.getInt(1); }
然后,利用generatedKey来获取id,psmt = con.prepareStatement
("insert into orders (receiver,address,telephone,total,detailnum,userid)values
(?,?,?,?,?,?)",Statement.RETURN_GENERATED_KEYS); psmt.setString(1, order.getReceiver()); …… psmt.executeUpdate(); results = psmt.getGeneratedKeys(); int num = -1; if(results.next())
{ num = results.getInt(1); }
然后,调用存储过程来实现,当然这种情况下,插入对象的属性不宜过多,否则存储过程的输入参数太多。在存储过程中,将id作为输出参数返回,CallableStatement proc = conn.prepareCall("{call proc_insert(?,?,?)}"); proc.setString(1, cardname);proc.setInt(2, money); proc.registerOutParameter(3, Types.INTEGER); proc.execute(); num = proc.getInt(3)
然后,SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。
然后,IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
最后,SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章