当前位置:  技术问答>java相关

在象数据库插入一条纪录后怎样得到此纪录中自动编号字段的内容?

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

    本文导语:  在 PreparedStatement对象插入一条纪录,然后得到这条纪录的自动编号(在一个字段中) 请问用什么方法最好? | 如果子段是递增的话就容易一点 在update后 select max(递增字段) as num from table ...

在 PreparedStatement对象插入一条纪录,然后得到这条纪录的自动编号(在一个字段中)
请问用什么方法最好?

|
如果子段是递增的话就容易一点
在update后
select max(递增字段) as num from table
然后得到num的值后再commit

因为如果你不commit那么一般都会锁住表的,等你commit才释放表给其他用户更新,所以select max操作得到的结果应该是你最新插入的纪录,而不是其程序插入的纪录,这就可以保证获得插入的纪录了。

但是不同的数据库的纪录锁都不大相同的,最好测试一下或者看看帮助,上面的办法要求是表级锁

|
Retrieving auto-generated keys
To address the common need to obtain the value of an auto-generated or auto-incremented key, the JDBC 3.0 API now makes it painless to obtain this value. To determine the value of any generated keys, simply specify in the statement's execute() method an optional flag denoting that you are interested in the generated value. Your level of interest can either be Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS. After executing the statement, the values for the generated keys are obtained by retrieving a ResultSet from a Statement's instance method, getGeneratedKeys(). The ResultSet contains a row for each generated key. The example in Listing 1 creates a new author and returns the corresponding auto-generated key. 

Listing 1. Retrieving an auto-generated key
Statement stmt = conn.createStatement();
// Obtain the generated key that results from the query.
stmt.executeUpdate("INSERT INTO authors " +
                   "(first_name, last_name) " +
                   "VALUES ('George', 'Orwell')",
                   Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
if ( rs.next() ) {
    // Retrieve the auto generated key(s).
    int key = rs.getInt(1);
}

 


|
如果你用的是oracle的sequence来生成自增量,那么,可以用
select seq_name.curval num from  dual;
来获得
但在多用户并发访问这个sequence情况下可能会有问题

|
保存后取 最大记录号。

|
我也想知道在 DB2中如何得到 新插入记录的 ID??
http://expert.csdn.net/Expert/topic/1295/1295287.xml?temp=.8769495

|
请教 jimok(Jim) 
为了得到最新的MAX,必须给table加一个锁,但是table加锁好象是数据库自己控制的,我们怎样才能给table加锁?

    
 
 

您可能感兴趣的文章:

  • if(!rs.next())表示数据库中无此纪录,还是没有下一条纪录
  • 如何创建日志文件?并且纪录对数据库的操作???
  • 如何修该数据库纪录?
  • 高手帮我看看--修改数据库纪录
  • 急急急-关于数据库纪录的修改
  • ORACLE数据库常用字段数据类型介绍
  • RESIN做服务器,从数据库里提取字段值,页面输出顺序必须与字段顺序一致吗?
  • 在Java中,用Mircosoft SQL Server数据库,请问要进行日期字段的读取,用( ResultSet rs ; rs.getDate(1),其中1代表相应的字段为 DateTi
  • 如何将数据库表中每个字段的字段描述在JSP文件中显示出来?
  • 数据库递增字段的问题。
  • 从数据库得到多字段内容为何出错?
  • php中单个数据库字段多列显示(单字段分页、横向输出)
  • 为什么我从数据库中取记录时最多只取两个字段,多于三个字段则报错
  • oracle 实际值超过数据库某个字段指定长度报错解决
  • 请问如何取出SQL数据库里某表某字段的description内容
  • 如何在jsp中得到数据库中某张表的字段?
  • java怎样读取数据库表中字段的数据类型?
  • 急!急!数据库字段名称中有特殊符号(/,(),空格,:)在访问数据库时应该是如何处理
  • 怎样对一个数据库里的字段求和?
  • 请问jboss+oracle文件怎样配置,数据库中文字段不为乱码
  • 谁能给我一个PipedInputStream and PipedOutputStream 怎么用的例子,我想用数据库image字段对另一个imaeagezi字段
  • 如何成功读取并显示SQL数据库中image类型字段?
  • 关于jsp中取数据库中字段名的问题(急急急急急,马上解答马上给分)
  • java中的数据库结果集可以被赋值吗,可以通过结果集的方法来更新数据库字段吗?
  • !!!在Java中如何取得Resultset中的datetime和timestamp字段?数据库是SQLServer
  • sql 查询所有数据库、表名、表字段的代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我从JSP页将数据插入到oracle数据库中,为何汉字插入后数据库中显示为乱码呢?
  • 向数据库中插入数据并返回当前插入的行数及全局变量@@IDENTITY应用
  • 请问:在用proc方式往数据库插入数据时,我能不能定义一个结构体,它与表的每一项对应,将结构体赋好值后,再只将这个结构体插入表中,这行不行啊?
  • 用PreparedStatement ps 在数据库中插入记录,但还未提交事务,此时再用Delete语句为什么删除不了用 ps刚才插入的记录,如何可以删除未这
  • 当用servlet与jsp在数据库中插入一条记录时,此时是用tomcat服务器的,当页面显示完成插入时,如果此时按下F5或者选择刷新,系统就会提示
  • 中文插入SQL数据库中变成了乱码?
  • shell脚本读取rrd文件将数据插入sqlserver数据库中
  • 高手请看,关于数据库插入的问题
  • acess数据库中的是/否单元,是怎么显示和插入数据的?
  • 如何向数据库插入中文记录?
  • 有谁做过一次性插入5000多条记录到数据库中?
  • PHP取得当前插入数据库记录id值
  • 从jsp向数据库插入日期时间的方法
  • 将结构体变量作为一条记录插入数据库表中
  • 在CMP Bean中如何往数据库中插入数据?
  • 如何创建日志文件?并且纪录对数据库的操作??? iis7站长之家
  • linux pro c 插入数据库汉字都是?? 急
  • JAVA连数据库并插入数据的问题?
  • 向Oracle数据库的CLOB属性插入数据报字符串过长错误
  • 请问如何将日期型的变量插入数据库中??
  • 基于Key-Value的NOSQL数据库Redis的数据结构及常用相关命令介绍
  • 如何监控数据库的数据,如果数据库数据更改,就通知Server
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • 散分:Jbuilder6开发数据库应用请问你们都用什么数据库? 免费的数据库有那些?
  • 文档数据库mongodb与列式数据库hbase详细比较
  • 如何从数据库中或文本文件中提取数据到另一个数据库中?
  • nosql数据库levedb介绍及levedb最新版1.18下载安装
  • 用JDBC连接Oracle数据库时,如何向数据库中写日期型数据(格式)?谢了!
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 开发java下的数据库程序,用什么数据库引擎?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3