如果用微软自己的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好了。
sqlserver driver 2005是jdbc3.0的吗?如果是就没问题了。
不建议 使用 sql identity 这个 在实际项目中做不到 同步更新的效果哦 建议 你使用 国际化 uniqueidentifier 给你个简单的例子 可以参考 create table Demo ( id identifier not null, username varchar(16) not null, ) insert into Demo values(newid(),'username');
然后插入数据,在事务结束前查询最新的id就是你当前插入的记录的id。
当然前提是你的数据库支持事务
在多线程下,你取的get ID可能是别人同时操作数据库写入的。
http://sourceforge.net/project/showfiles.php?group_id=33291
(这个以前用过,方法与MS-JDBC差别不大,不用改很多程序)到sun的网站,你可以看到所有通过认证的JDBC驱动。直接上Hibernate好了。
建议 你使用 国际化 uniqueidentifier
给你个简单的例子 可以参考 create table Demo
(
id identifier not null,
username varchar(16) not null,
)
insert into Demo values(newid(),'username');