比如某表有两个字段id ,name 其中id是自增主键。 插入数据时sql语句直接写 insert into table (name) values('XXX'); id的值直接由数据库自增获得。另外还有一种方式是通过sequence的方式: insert into table(id,name) values(next value for test,"testName"); 其中test是sequence名这两种插入记录的方式在执行时是不知道主键值的。所以我希望有办法在执行语句时能够获得这个值。 一是实现方法不知道。二是代码怎么写也不知道。
比如某表有两个字段id ,name
其中id是自增主键。
插入数据时sql语句直接写 insert into table (name) values('XXX');
id的值直接由数据库自增获得。另外还有一种方式是通过sequence的方式:
insert into table(id,name) values(next value for test,"testName"); 其中test是sequence名这两种插入记录的方式在执行时是不知道主键值的。所以我希望有办法在执行语句时能够获得这个值。
一是实现方法不知道。二是代码怎么写也不知道。
关键是,我不理解你要干什么。你把你想实现的功能说出来,或许我们可以帮你想想如何解决。
现在的情形是有张表,字段是
id(主键) username LoginTime LogoutTime 用途是当某个用户进行登录操作之后在表中创建一条记录,记录下用户名和登录时间
当这个用户退出时,在同一条记录中update上退出时间。检索条件就是id
这样为了能够定位到这条记录我需要获得id值。
update后,select id from table order by id desc,这样得到的第一个id就是刚才插入的id。当然,也可按logintime排序。当然,如果主键是用序列实现的,则可以得到序列当前值,既是插入的id。当然,也可select中max(id)。
PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.executeUpdate(); //检索由于执行此 Statement 对象而创建的所有自动生成的键 ResultSet rs = pstmt.getGeneratedKeys(); if (rs.next()) { //知其仅有一列,故获取第一列 Long id = rs.getLong(1); System.out.println("------id = " + id); }