用JDBC如何获得刚刚插入记录的主键值(自动生成),在csdn中有人问过,不过没找到答案,请大家帮忙!!!
数据库 sql server 2005

解决方案 »

  1.   

    Mysql 里面有SQL支持 , sqlserver不知道。不过这种机制不通用,不是办法,LX有没有好办法?
      

  2.   

    pstmt = conn.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);jdbc驱动需要3.0的,jdk1.5,我在oracle数据库用过
      

  3.   

    用事务进行控制,插入数据之前打开事务,即设置自动提交为false,
    然后插入数据,在事务结束前查询最新的id就是你当前插入的记录的id。
    当然前提是你的数据库支持事务
      

  4.   

    sqlserver 有系统变量@@identity,插入后直接运行select @@identity,结果就是你要的
      

  5.   

    每条记录自增id做为主键的话,不是直接get ID这个字段就可以取出来了吗?
      

  6.   

    回楼上,
    在多线程下,你取的get ID可能是别人同时操作数据库写入的。
      

  7.   

    如果用微软自己的JDBC驱动(SQL Server 2000 Driver for JDBC ),不能在insert()后直接获得自动编号字段的值,因为它是基于JDBC2.0规范的。JDBC3.0规范中有检索自动产生的关键字的方法。不过貌似微软的JDBC没有3.0的。可以使用第三方提供的驱动。比如:http://www.inetsoftware.de提供的Gate3驱动。或者用这个:jTDs-The JDBC driver for MS-SQLServer
          http://sourceforge.net/project/showfiles.php?group_id=33291
    (这个以前用过,方法与MS-JDBC差别不大,不用改很多程序)到sun的网站,你可以看到所有通过认证的JDBC驱动。直接上Hibernate好了。
      

  8.   

    sqlserver driver 2005是jdbc3.0的吗?如果是就没问题了。
      

  9.   

    不建议 使用 sql  identity 这个  在实际项目中做不到 同步更新的效果哦
    建议 你使用  国际化  uniqueidentifier   
    给你个简单的例子 可以参考   create table Demo
    (
     id identifier not null,
     username varchar(16) not null,
    )
    insert into Demo values(newid(),'username');