JDBC 插入时, 取得插入的主键的返回值

(参考了这篇文章 )

 

数据库是 SQL Server 2000

 

作为数据库菜鸟, 为这个问题头疼了很久, 今天终于痛下决心解决掉, 爬文后得到解决方案, 心中暗爽.

 

"SQLServer:
INSERT INTO tableName (fieldList ...) values (valueList ...) SELECT @@IDENTITY AS aliasName;
这一句相当于执行查询操作,从结果集中getXXX(aliasName);就可以获取.

Oracle Release 2(之前的版本要先定义 ":aliasName"):
INSERT INTO tableName (fieldList ...) values (valueList ...) RETURNING [primaryKey INTO] aliasName;
同上的方法可以获取.这两种方法都是数据库支持的sql语句,原以根本不存在并发冲突.

mysql:
没有找到可以绝对保证原子性的语句(谁知道反馈一下)"

 

这里要纠正下, 直接用 "Insert ...; Select @@IDENTITY ... " 作为 SQL 语句执行 Statement.executeQuery(sql) 有问题, 会报异常 "该语句没有返回结果集 "

 

搜索后找到解决方案, 在语句前增加 "SET NOCOUNT ON;" 即可

 

即 "SET NOCOUNT ON;Insert ...; Select @@IDENTITY ...;", 执行后即可通过返回的 ResultSet 得到新增项的 ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值