我表里的ID字段是自动递增字段 我插入数据用sequence.nextval生成这个ID我现在想每插入一条记录时,就拿到这个ID我差API有这么两种方法
PreparedStatement psmcnn.prepareStatement("insert into bbs values(seq.nextval,?,?)",Statement.RETURN_GENERATED_KEYS );
......
psm.executeUpdate();
ResultSet rs = psm.getGeneratedKeys();//获取自动递增字段的结果集
rs.next();
int id = rs.getInt(1) //获取seq.nextval的值不知这个方法可不可以拿到递增字段的值呢,在mysql下我试了,可以.
但我现在我用的是oracle数据库,为什么每次运行到int id = rs.getInt(1)就报错?
rs.getInt(1)返回的是RowId类型,这个类型怎么转换为int类型?
PreparedStatement psmcnn.prepareStatement("insert into bbs values(seq.nextval,?,?)",Statement.RETURN_GENERATED_KEYS );
......
psm.executeUpdate();
ResultSet rs = psm.getGeneratedKeys();//获取自动递增字段的结果集
rs.next();
int id = rs.getInt(1) //获取seq.nextval的值不知这个方法可不可以拿到递增字段的值呢,在mysql下我试了,可以.
但我现在我用的是oracle数据库,为什么每次运行到int id = rs.getInt(1)就报错?
rs.getInt(1)返回的是RowId类型,这个类型怎么转换为int类型?
楼主【jingulang】截止到2008-07-21 14:45:47的历史汇总数据(不包括此帖):
发帖的总数量:29 发帖的总分数:940 每贴平均分数:32
回帖的总数量:424 得分贴总数量:165 回帖的得分率:38%
结贴的总数量:29 结贴的总分数:940
无满意结贴数:2 无满意结贴分:40
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:6.90 % 无满意结分率:4.26 %
敬礼!
然后用ResultSet.getString("id");
返回sequence的当前值。rs.getInt(1)报错那就rs.getString(1)试试看咯。
你插入时的id从以下的方法获得你不就取得id了吗public Integer getId() throws Exception{
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
try{
conn=JdbcUtil.getConnection();
String sql="select seq.nextval from dual";
pstm=conn.prepareStatement(sql);
rs=pstm.executeQuery();
Integer id=null;
if(rs.next()){
id=rs.getInt(1);
}
return id;
}finally{
if(rs!=null) try{ rs.close(); } catch(Exception e){}
if(pstm!=null) try{ stm.close(); } catch(Exception e){}
if(conn!=null) try{ conn.close(); } catch(Exception e){}
}
}
那lz可以参考下我的代码就是我以前在oracle数据库用jdbc写的