永发信息网

如何得到JDBCInsert语句执行后插入数据库记录的主键

答案:1  悬赏:0  手机版
解决时间 2021-12-22 12:25
如何得到JDBCInsert语句执行后插入数据库记录的主键
最佳答案
Oracle 的主键 是 sequence 生成的吗?若是,以下是解决方法:
1,用Oracle 的returning 语句。
PreparedStatement sta = conn.prepareStatement("INSERT INTO LOGGING VALUES (TESTSEQ.NEXTVAL,SYSDATE)returning id into ? ");

sta.execute();
ResultSet rset = sta.getResultSet();
while(rset.next())
{
int id = rset.getInt(1);
}
如果是既有传入值,又有返回值的话,应该:
PreparedStatement sta = conn.prepareStatement("BEGIN INSERT INTO LOGGING VALUES
(TESTSEQ.NEXTVAL,? )returning id into ?; END; ");

sta = conn.prepareCall(sqlText);
sta .setString(1, srqID);
sta .registerOutParameter(2, Types.NUMERIC);
sta .execute();

return sta .getLong(2);
或者用oracle的 OraclePreparedStatement

String sql = "insert into test values(1,?) returning id into ?";
OraclePreparedStatement pstt = (OraclePreparedStatement) conn.prepareStatement(sql);

pstt.setString(1, "xxx");
pstt.registerReturnParameter(2, OracleTypes.INTEGER);

pstt.executeUpdate();

ResultSet rset = pstt.getReturnResultSet(); // rest is not null

while (rset.next()) {
int id = rset.getInt(1);
System.out.println("Insert returnning: " + id);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
等失望展够了我就离开了
襄阳江华机械厂怎么样啊
生物化学为基因工程技术奠定了哪些理论基础
凡科建站的网站模板可以自定义吗?想自己设计
HTML表格内文字怎么调整横向边距?
知道详细地址,如何查询该地址所在的街道办事
水平仪的水是什么
单选题我国既是资源大国,又是资源小国,这是
达曼人的加入中国籍
某种型号的空调经过两次降价,价格比原来下降
万能小丑皮肤到底好不好
已于单位签订两次固定期限合同,合同于6月底
宝宝起名免费取名
小明在用天平称物体质量时,先将天平放在水平
卧室床头灯风水
推荐资讯
模拟市民3 人物说话声音有中文的么
Let’s the books.A. to go and findB. to go
单选题对0.1mol/LNa2CO3溶液进行如下操作,能
判断题44999≈5万.
下图为理想大陆周围洋流分布的模式图,读图回
What is the best way to study? This is a v
盛夏,某校组织珠江夜游,在 流速为2.5千米/时
二十岁了,我还喜欢跟妈妈一起睡
公主裙配什么鞋,公主裙配什么鞋子好看
江米粽子煮多长时间
白底黑线很萌的表情叫什么?如下。
吃回头草
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?