jsp插入数据库一条记录后怎么样能取出插入当前记录的id值

zzxiaoma 2008-04-17 08:51:02
比方调用一个写好的插入类,调用完后需要返回插入记录的id值,这个id是自动增长列.怎么样才能插入记录后就能取出id??
...全文
366 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chjx1982 2008-04-17
  • 打赏
  • 举报
回复
id最好是自己写,而不要用数据库自动增长的.
yangxiao_jiang 2008-04-17
  • 打赏
  • 举报
回复
可以调用数据库的内置函数

比如mysql:last_insert()
awusoft 2008-04-17
  • 打赏
  • 举报
回复
select max(id) from yourTableName


有一定的可能会不对,比如说你刚插入完一条数据,事务也提交,这时候,另外一个马上去插入数据,插入完之后你再去取.就会得不到这正确的结果,要么像四楼所说的一样.要么就得用到唯一键去查询了.
比如说用户这一块,用户名应该是唯一的,你就可以用这个用户去查询它的ID.其它的也一样.
既然是关联的,你可以把几个表关联起来一起查询第三个表的ID呀.
zzxiaoma 2008-04-17
  • 打赏
  • 举报
回复
取最大值不能满足我现在的业务,因为这个id和其他表有关联,也就是说3个表id关联,前2个表关联可以用最大值,但是到第三个表的时候再取最大值就不一定了,这个不是一个操作,需要多步完成,到第三步查出id前有可能已经再次插入数据
「已注销」 2008-04-17
  • 打赏
  • 举报
回复
ibatis,hibernate等框架可以在插入的同时返回id
select max(id) from yourTableName 也可以但必须用事物控制
  • 打赏
  • 举报
回复
有几种方法,其实最好的是:

Statement stmt = conn.createStatement();
// Obtain the generated key that results from the query.
stmt.executeUpdate("INSERT INTO authors " +
"(first_name, last_name) " +
"VALUES ('George', 'Orwell')",
Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
if ( rs.next() ) {
// Retrieve the auto generated key(s).
int key = rs.getInt(1);
}

这样的代码,不过这样的代码如果想正常的运行,必须运行在JDBC 3.0的版本下,,这意味着你使用的JDBC的JAR包驱动必须要支持到JDBC3.0的,你可以查看相关的官方文档,看是否支持。。

还有另外一种是使用最简单的SQL语句了:
select max(id) from yourTableName
类似这样的语句了,你max(id)之前必须要提交事务,确保记录已经插入到DB中。

还有另外一种办法就是把这个代码放到存储过程中了,原理是一样。
a2048 2008-04-17
  • 打赏
  • 举报
回复
select max(id) as id from t
s_liangchao1s 2008-04-17
  • 打赏
  • 举报
回复
取出数据库数据条数
whmjxa 2008-04-17
  • 打赏
  • 举报
回复
select id from table where ziduan='"+ziduan+"'

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧