当前位置:  数据库>oracle

如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键

    来源: 互联网  发布时间:2017-04-20

    本文导语: 在应用中,很多时候会对表的主键用一个自动增涨的数来付值,如Oracle的sequence,插入后又想得到的主键的值。下面介绍一下相关的方法。 1,用Oracle 的returning 语句。 PreparedStatement  sta = conn.prepareStatement("INSERT INTO LOGGING VALUES (TE...

应用中,很多时候会对表的主键用一个自动增涨的数来付值,如Oraclesequence,插入后又想得到的主键的值。下面介绍一下相关的方法

1,用Oracle 的returning 语句

PreparedStatement  sta = conn.prepareStatement("INSERT INTO 得到自增列的下一个会插入的id iis7站长之家 VALUES (TESTSEQ.NEXTVAL,SYSDATE)returning id into ? ");


  sta.execute();
  ResultSet rset = sta.getResultSet();
  while(rset.next())
    {
      int id = rset.getInt(1);




    }

如果是既有传入值,又有返回值的话,应该:

sta = conn.prepareStatement("INSERT INTO LOGGING VALUES

(TESTSEQ.NEXTVAL,? )returning id into ?; ; ");

 

sta = conn.(sqlText);
sta .setString(1, srqID);

sta .registerOutParameter(2, Types.NUMERIC);
sta .execute();

 

return sta .getLong(2);

或者用oracle的 OraclePreparedStatement

 

            String sql = "insert into test values(1,?) returning  id into ?";
            OraclePreparedStatement pstt = (OraclePreparedStatement) conn.prepareStatement(sql);

            pstt.setString(1, "xxx");
            pstt.registerReturnParameter(2, OracleTypes.INTEGER);

            pstt.executeUpdate();

            ResultSet rset = pstt.getReturnResultSet(); // rest is not null
           
            while (rset.next()) {
                int id = rset.getInt(1);
                system.out.println("insert returnning: " + id);
            }












 

 

2,用JDBC的getGeneratedKeys,返回的是Oracle 的rowid

PreparedStatement  sta = conn.prepareStatement("INSERT INTO TESTTABLE VALUES (TESTSEQ.NEXTVAL,'aaaa')",Statement.RETURN_GENERATED_KEYS);

  sta.execute();
  
  System.out.println(sta.getGeneratedKeys());
  ResultSet rest = sta.getGeneratedKeys();
  rest.next();
  //oracle rowid
  System.out.println(rest.getString(1));






    
 
 

您可能感兴趣的文章:

  • 语句:select max(age) from user,如何用在ResultSet中得到?!!
  • mssql中得到当天数据的语句
  • 用什么语句得到当天日期?
  • 紧急!!!选择语句中得到的记录集,为什么游标只能向下,而不能向上。?
  • 如何得到一个resultSet的长度,即一条select语句返回了多少符合条件记录
  • oracle中得到一条SQL语句的执行时间的两种方式
  • 请问哪里能得到at&t的汇编说明书?比如各个语句的功能说明 。
  • 怎样用SQL语句得到查询结果的记录数?100fen
  • Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API
  • 怎样用SQL语句得到查询结果的记录数?100分啊!
  • 求把字符串转为时间,得到8小时前的记录的sql语句
  • 得到自增列的下一个会插入的id
  • 解析sql中得到刚刚插入的数据的id
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 先 fork 子进程然后 execl 另一个可执行程序, 如何得到这个可执行程序结束的返回值?
  • bash脚本程序如何得到自身的执行路径?
  • 用哪些函数可以得到执行一个程序的系统CPU时间,用户CPU时间,时钟时间啊?
  • 用Shell执行SQL得到的结果是乱码.
  • AIX 5.3下调用windows 2000上的exe程序,且AIX下需要得到windows下程序执行的返回结果
  • jsp中如何判断执行查询后得到的结果集中的记录为空。
  • 请问有没有函数可以得到当前执行程序的路径的。。。。
  • 请问怎么在C程序中得到该可执行程序的文件名???
  • jb6中我如何得到tomcat的执行要目录呢?
  • gcc如何得到执行程序的名字和路径
  • snmp中的执行linux系统命令如uname的函数,其返回的结果怎么得到啊????
  • SQLSERVER中得到执行计划的两种方式
  • Linux下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结果
  • ssh登陆后 怎么可以去执行命令,然后得到返回结果
  • 得到参数却无法继续执行,请大家帮帮忙了!
  • 万般火急!关于java打印,已经得到printerJob实例,那么怎么通过它得到Pageable实例?
  • 怎样得到当前目录(不是在java程序中得到)
  • File类的getLastModify()得到的是长型整数,如何才能得到一个已知文件日期?
  • DateFormat的用法?比如说现在想要得到21:38,我老是得到9:38
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 我用JFileChooser得到了某个文件夹名,但如何得到此文件夹下的所有文件名
  • 苦恼的中文乱码!!!在servlet中用request.getParameter("xingming")得到的姓名域值就变成了乱码"???",更别提下面的转化函数得到的结果了。
  • linux下如何编程得到网卡的硬件描述,如得到某块网卡为“3Com 3c590/3c595....”
  • 如何得到一个终端的终端号/标示?
  • 菜问一则:请问用什么命令可得到系统路径
  • getInitParameter为什么得到null
  • 请问调用那个方法能够得到变量类型的返回值?
  • 怎样得到系统日期?
  • 用java.util.random怎么得到一个指定区间的随机数
  • 如何得到linux机器的时钟频率?
  • 急!如何得到snmp工具的显示数据?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,