DBUTILS 获得刚插入自增id记录的id信息

我在做两个需要关联的表的时候,第二张表需要知道第一张表的id信息(做关联),然而第一张表刚插入到数据库,如何利用dbutils获得id呢?

我用的方法是利用@@identity这个方法
insert into 后获得自动插入的id(select @@identity)
当运行完插入语句后,执行select @@identity就可得到自动生成的id
具体代码

    @Override
    public long setfptable(dctable dc) {
        String sql="insert into tbknhd3 (cunCode,bdcRen,phonebdcren,dtime,dcRen,phone,j0101,j0102,j0103,j0104,j0105,j0106,j0107,j0201,j0202,j0203,j0204,j0205,j0206,j0207,j0208,j0209,j0301,j0302,j0303,j0304,j0401,j0402,j0501,j0502,j0601,j0602,j0701,j0702,j0801,j0802,j0901,j0902,j0903,j0904,j1001,j1002,j1101,j1102,j1103,j1104,j1105,j1106,j1107,j1108,j1109,j1110,j1111,j1112,j1201,j1202,j1203,j1204,j1301,j1302,j1303,j1304,j1305,j1306,j1307,j1308,j1401,j1402,j1501,r0101,r0102,r0103,r0201,r0202,r0203,r0301,r0302,r0303,r0304,r0305,r0401,r0402,r0501,r0502,r0503,r0504,r0505,r0601,r0602,r0603,r0604,r0605,r0606,r0607,r0608,r0609,r0610,r0701) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
         String sql2="select @@identity";
        int i=-1;
         BigInteger num = null;
            try {
                 i = qr.update(sql,dc.getCunCode(),dc.getBdcRen(),dc.getPhonebdcren(),dc.getDtime(),dc.getDcRen(),dc.getPhone(),dc.getJ0101(),dc.getJ0102(),dc.getJ0103(),dc.getJ0104(),dc.getJ0105(),dc.getJ0106(),dc.getJ0107(),dc.getJ0201(),dc.getJ0202(),dc.getJ0203(),dc.getJ0204(),dc.getJ0205(),dc.getJ0206(),dc.getJ0207(),dc.getJ0208(),dc.getJ0209(),dc.getJ0301(),dc.getJ0302(),dc.getJ0303(),dc.getJ0304(),dc.getJ0401(),dc.getJ0402(),dc.getJ0501(),dc.getJ0502(),dc.getJ0601(),dc.getJ0602(),dc.getJ0701(),dc.getJ0702(),dc.getJ0801(),dc.getJ0802(),dc.getJ0901(),dc.getJ0902(),dc.getJ0903(),dc.getJ0904(),dc.getJ1001(),dc.getJ1002(),dc.getJ1101(),dc.getJ1102(),dc.getJ1103(),dc.getJ1104(),dc.getJ1105(),dc.getJ1106(),dc.getJ1107(),dc.getJ1108(),dc.getJ1109(),dc.getJ1110(),dc.getJ1111(),dc.getJ1112(),dc.getJ1201(),dc.getJ1202(),dc.getJ1203(),dc.getJ1204(),dc.getJ1301(),dc.getJ1302(),dc.getJ1303(),dc.getJ1304(),dc.getJ1305(),dc.getJ1306(),dc.getJ1307(),dc.getJ1308(),dc.getJ1401(),dc.getJ1402(),dc.getJ1501(),dc.getR0101(),dc.getR0102(),dc.getR0103(),dc.getR0201(),dc.getR0202(),dc.getR0203(),dc.getR0301(),dc.getR0302(),dc.getR0303(),dc.getR0304(),dc.getR0305(),dc.getR0401(),dc.getR0402(),dc.getR0501(),dc.getR0502(),dc.getR0503(),dc.getR0504(),dc.getR0505(),dc.getR0601(),dc.getR0602(),dc.getR0603(),dc.getR0604(),dc.getR0605(),dc.getR0606(),dc.getR0607(),dc.getR0608(),dc.getR0609(),dc.getR0610(),dc.getR0701());
                 num= (BigInteger) qr.query(sql2,new ScalarHandler(1));
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return num.longValue();

    }

由于数据比较多,直接看sql2即可。在处理过程中,原来使用long来接收查询id语句的返回值(select @@identity)用强制转换程long接收,结果报错,发现它的返回值是BigInteger于是先用biginteger接收再用 longValue()转换成long类型返回。 若有错误希望指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值