首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

取得插入当前行数据的自动增长字段的值

2013-07-09 
获得插入当前行数据的自动增长字段的值pstmtconn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS

获得插入当前行数据的自动增长字段的值
pstmt=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
然后处理完了ResultSet rsKey=pstmt.getGeneratedKeys(); //1
   rsKey.next();             //2
   int orderid = rsKey.getInt(1);//3
DEBUG结果是前面全没问题包括1,2两步都对的,并且rsKey.next()为TRUE。在执行第3步后跳到异常,提示
java.sql.SQLException: 无效的列类型: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
 at oracle.jdbc.driver.Accessor.unimpl(Accessor.java:357)
 at oracle.jdbc.driver.Accessor.getInt(Accessor.java:467)
 at oracle.jdbc.driver.OracleReturnResultSet.getInt(OracleReturnResultSet.java:265)
.....
很郁闷,弄了一整天了。不知道怎么回事。望高手解答,万谢啊

我补充一下,我的主键是seq_id.nextval这样插入的,
[解决办法]
先把seq_id.nextval这个值取出来,或者直接写到你的SQL里面去
[解决办法]
以前用过一次oracle的,它没有自增的,要通过序列来的,有点麻烦,我回去帮你找个例子看看
[解决办法]
给你写了个例子。。。

--1.部门表(t_part)
create table t_part
(
       p_id  number(8) primary key,   --部门编号(自增列)
       p_namevarchar2(20),        --部门名称
       p_remarkvarchar2(1000)    --部门介绍       
)
--创建seq_partid序列
create sequence seq_partid
start with 1
nocache;
--实现p_id 的自动增长
create or replace trigger tri_partid
before insert on t_part
for each row
begin
    select seq_partid.nextval into :new.p_id from dual;
end; 

--插入数据
insert into t_part values(7,'销售一部','销售好销售妙');
insert into t_part values(0,'销售二部','销售好销售妙');


添加的时候id就无所谓怎么填了

热点排行