利用DBUTILS获得刚插入自增id记录的id信息的方法及代码



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

我用的方法是利用@@identity这个方法

insert into 后获得自动插入的id(sele C++t @@identity)

当运行完插入语句后,执行sele C++t @@identity就可得到自动生成的id

具体代码



    @Override

    publi C++ long setfptable(d C++table d C++) {

        String sql="insert into tbknhd3 ( C++un C++ode,bd C++Ren,phonebd C++ren,dtime,d C++Ren,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="sele C++t @@identity";

        int i=-1;

         BigInteger num = null;

            try {

                 i = qr.update(sql,d C++.get C++un C++ode(),d C++.getBd C++Ren(),d C++.getPhonebd C++ren(),d C++.getDtime(),d C++.getD C++Ren(),d C++.getPhone(),d C++.getJ0101(),d C++.getJ0102(),d C++.getJ0103(),d C++.getJ0104(),d C++.getJ0105(),d C++.getJ0106(),d C++.getJ0107(),d C++.getJ0201(),d C++.getJ0202(),d C++.getJ0203(),d C++.getJ0204(),d C++.getJ0205(),d C++.getJ0206(),d C++.getJ0207(),d C++.getJ0208(),d C++.getJ0209(),d C++.getJ0301(),d C++.getJ0302(),d C++.getJ0303(),d C++.getJ0304(),d C++.getJ0401(),d C++.getJ0402(),d C++.getJ0501(),d C++.getJ0502(),d C++.getJ0601(),d C++.getJ0602(),d C++.getJ0701(),d C++.getJ0702(),d C++.getJ0801(),d C++.getJ0802(),d C++.getJ0901(),d C++.getJ0902(),d C++.getJ0903(),d C++.getJ0904(),d C++.getJ1001(),d C++.getJ1002(),d C++.getJ1101(),d C++.getJ1102(),d C++.getJ1103(),d C++.getJ1104(),d C++.getJ1105(),d C++.getJ1106(),d C++.getJ1107(),d C++.getJ1108(),d C++.getJ1109(),d C++.getJ1110(),d C++.getJ1111(),d C++.getJ1112(),d C++.getJ1201(),d C++.getJ1202(),d C++.getJ1203(),d C++.getJ1204(),d C++.getJ1301(),d C++.getJ1302(),d C++.getJ1303(),d C++.getJ1304(),d C++.getJ1305(),d C++.getJ1306(),d C++.getJ1307(),d C++.getJ1308(),d C++.getJ1401(),d C++.getJ1402(),d C++.getJ1501(),d C++.getR0101(),d C++.getR0102(),d C++.getR0103(),d C++.getR0201(),d C++.getR0202(),d C++.getR0203(),d C++.getR0301(),d C++.getR0302(),d C++.getR0303(),d C++.getR0304(),d C++.getR0305(),d C++.getR0401(),d C++.getR0402(),d C++.getR0501(),d C++.getR0502(),d C++.getR0503(),d C++.getR0504(),d C++.getR0505(),d C++.getR0601(),d C++.getR0602(),d C++.getR0603(),d C++.getR0604(),d C++.getR0605(),d C++.getR0606(),d C++.getR0607(),d C++.getR0608(),d C++.getR0609(),d C++.getR0610(),d C++.getR0701());

                 num= (BigInteger) qr.query(sql2,new S C++alarHandler(1));

            } C++at C++h (SQLEx C++eption e) {

                // TODO Auto-generated C++at C++h blo C++k

                e.printSta C++kTra C++e();

            }

            return num.longValue();


    }



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

猜你喜欢

转载自173806613.iteye.com/blog/2406348