获得插入当前行数据的自动增长字段的值
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_name varchar2(20), --部门名称
p_remark varchar2(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就无所谓怎么填了