日期:2014-05-20  浏览次数:20690 次

表中有自增列,java能否支持执行insert语句后,能返回自增列的值?
注意:我是初学者,我的同事说插入记录后,取自增列很麻烦,他不建议我用自增列,但我看了一下java文档,好象java支持insert数据后马上返回自增列的值.
请问java   是否支持我说的这个功能呢?  
如果有这个功能,   是否对所有数据库都支持?

最好能给些代码,谢谢!


------解决方案--------------------
好象java支持insert数据后马上返回自增列的值.
学习~~
------解决方案--------------------
用存储过程可以吧,但在java语句里面还要注册一个得到返回值的变量
------解决方案--------------------
LZ估计不是这个意思~~
LZ的意思是 "insert数据后马上返回自增列的值. ",并不是用select 实现
------解决方案--------------------
JDBC 3.0可以实现。需要在语句的 execute() 方法中指定一个可选的标记,Statement.RETURN_GENERATED_KEYS和Statement.NO_GENERATED_KEYS。
通过Statement 的实例方法 getGeneratedKeys() 来检索 ResultSet 而获得。ResultSet 包含了每个所产生的关键字的列。参考下面代码:
Statement stmt = conn.createStatement();
stmt.executeUpdate( "INSERT INTO authors (first_name, last_name) valueS (′George′, ′Orwell′) ",Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
if ( rs.next() ) {
int key = rs.getInt();
}



------解决方案--------------------
看你应用的jdbc包啊,网上找找有没有支持Access 的
------解决方案--------------------
用批处理:
String sql1= "declare @id numeric(9) ";
String sql2 = "insert into table "
String sql3= "select @id =@@identity ";
// "@con_id "可以直接用就是查询出的自增例的值.
String sql4= "select * from table where id =@id ";

stmt.addBatch(0,sql1);
stmt.addBatch(1,sql2);
stmt.addBatch(2,sql3);
stmt.addBatch(3,sql4);
stmt.executeBatch():



------解决方案--------------------
触发器和存储过程相结合
触发器没有输入参数没有返回值,但是可以在触发器中调用存储过程,让存储过程返回.
触发器设置为在Insert并且Update后触发.