日期:2014-05-20  浏览次数:20809 次

java中如何保证准确得到刚插入oracle中的a表的一条数据的自增长id
java中如何保证准确得到刚插入oracle中的a表的一条数据的自增长id.相当于sqlserver中的@@identity

------解决方案--------------------
oralce有自增长类型?不是一直用序列么?
------解决方案--------------------
定义一个序列
create sequence sequ
start with 1
increment by 1
在插入的时候
insert intotable1 (id) values (sequ.nextval);
每次插入数据重复调用就行了
------解决方案--------------------
INSERT INTO a VALUES (sq_A.nextval, '小红')
RETURNING id INTO r_id;

r_id 就是你需要的ID值
------解决方案--------------------
Statement#getGeneratedKeys()这个方法呢?
------解决方案--------------------

sq_A.Currval
------解决方案--------------------
1) jdbc 你看5楼朋友回复即可,JDBC2.0以后开始支持这个特性。翻翻文档即可知道。

2) hibernate没有这个问题,你懂的。

3) ibatis 也可以在 配置映射文件的时候解决。

[code=xml]
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="ID">
<![CDATA[
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
]]>
</selectKey>

<![CDATA[
INSERT INTO PRODUCT (PRD_ID,PRD_DESCRIPTION)
VALUES (#id#,#description#)
]]
</insert>
[/code]

4) JdbcTemplate 的方式和1)类似,我不记得了。看文档也可以知道。
------解决方案--------------------
[Quote=引用:]
1) jdbc 你看5楼朋友回复即可,JDBC2.0以后开始支持这个特性。翻翻文档即可知道。

2) hibernate没有这个问题,你懂的。

3) ibatis 也可以在 配置映射文件的时候解决。

[code=xml]
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="ID">
<![CDATA[
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
]]>
</selectKey>

<![CDATA[
INSERT INTO PRODUCT (PRD_ID,PRD_DESCRIPTION)
VALUES (#id#,#description#)
]]
</insert>
[/code]

4) JdbcTemplate 的方式和1)类似,我不记得了。看文档也可以知道。
[/Quote]

七楼正解~
------解决方案--------------------
乍搞那麽複雜。。。。。

直接JDBC
select sq_worktask_content.nextval from dual;
然後獲得值以後,插入得數據直接用那個返回值做爲其中一個參數就可以了