注意:我是初学者,我的同事说插入记录后,取自增列很麻烦,他不建议我用自增列,但我看了一下java文档,好象java支持insert数据后马上返回自增列的值.
请问java 是否支持我说的这个功能呢?
如果有这个功能, 是否对所有数据库都支持?最好能给些代码,谢谢!
请问java 是否支持我说的这个功能呢?
如果有这个功能, 是否对所有数据库都支持?最好能给些代码,谢谢!
解决方案 »
- SOS求救 语料库相关的编程开发
- Socket编程的疑问
- 内部类和组合在使用中有什么区别?请大家探讨
- 如果在程序中执行一个请求,然后获得返回的页面?
- j2se软件嵌套在html
- 画线问题,快进来吧!!
- 开发同一套桌面应用系统,用java(JB)和c++(VC)哪个开发周期长
- 用jbuilder7编的applet在ie上不能运行。
- 我用JBuilder6制作Applet小程序,然后用Archive Builder捆绑Applet所需的文件,如果我用AWT中的控件,Applet.html执行后可以启动Applet,
- 【怎样设置JOptionPane的外观??】
- 关于日期的问题
- ◆◇◆ 怎么我能读 txt 文件,但却不能读 jpg 文件? ◆◇◆
学习~~
select Scope_Identity()
LZ的意思是"insert数据后马上返回自增列的值.",并不是用select 实现
通过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();
}
LZ的意思是"insert数据后马上返回自增列的值.",并不是用select 实现
=====================================
这位兄弟说的对. 如果要用select 就没意义了.
============
你的方法我试过了,我用的是access数据库,java提示我说不支持. 郁闷.
请问如何知道我的JDBC版本??
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():
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(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
stmt.addBatch(sql4);
stmt.executeBatch():
触发器没有输入参数没有返回值,但是可以在触发器中调用存储过程,让存储过程返回.
触发器设置为在Insert并且Update后触发.
==================================================
好,但问题是我java如何取得SP的返回值? 要知道这个sp是在触发器中调用的,并不是java调用,所以我想不到有什么方法可以取得返回值.
JDBC 3.0可以实现。需要在语句的 execute() 方法中指定一个可选的标记,Statement.RETURN_GENERATED_KEYS和Statement.NO_GENERATED_KEYS。