设计教程 | 电脑硬件 | 网络技术 | 电脑医院 | 数据库 | 认证考试 | 工具软件 | 操作系统 | 办公应用 | 网站开发 | 论坛归档 |
Google
Web e-article.net
首页 » 资讯文章 » 论坛归档 » PHP讨论  

某表中有一自增字段,怎样返回刚刚插入的一条记录的自增字段值?

某表中有一自增字段,怎样返回刚刚插入的一条记录的自增字段值?
Array   Array   2006-07-08 13:41:29   浏览:   [返回目录]

返回首页 - 当前索引 -
主  题:
某表中有一自增字段,怎样返回刚刚插入的一条记录的自增字段值?

我以前用PHP,PHP内建函数中有这样的函数,可是JAVA中怎么办呢?
回复人: mim(苍之封印) ( ) 信誉:100 2003-05-30 17:27:27Z 得分:5
?

取插入前最后记录ID+1,或者再访问数据库取最后一条记录的ID,是不是太笨了点?
Top
回复人: zhaoxichao(小西) ( ) 信誉:107 2003-05-30 17:28:56Z 得分:5
?

select max(id) from table;
Top
回复人: shidu(十度) ( ) 信誉:100 2003-05-30 17:34:32Z 得分:0
?

好像只能select max(id) from table
Top
回复人: AllError(错误大全) ( ) 信誉:99 2003-05-30 18:18:12Z 得分:0
?

什么数据库?
Top
回复人: telescope(望远镜) ( ) 信誉:105 2003-06-04 08:16:00Z 得分:0
?

MySQL
Top
回复人: losebaby(losebaby) ( ) 信誉:100 2003-06-04 09:10:54Z 得分:0
?

sequence?
我记得mysql好像不支持
Top
回复人: airlulu(airlulu) ( ) 信誉:97 2003-06-04 09:32:47Z 得分:15
?

mysql确实有个自增类型。
你看它的文档,应该有地方说明的。
不过我是用手动方式获取ID的。
或者这样,先插入一条空记录,取回ID,再更新内容。
Top
回复人: kk_wyx(桃花岛) ( ) 信誉:94 2003-06-04 09:32:52Z 得分:0
?

看什么数据库,具体情况可具体处理
对于sqlsever2000
可如此做:  表  table1

String sql="SELECT IDENT_CURRENT('table1') AS 'Identity'";
           ResultSet rs= conn.executeQuery(sql);
           rs.absolute(1);
           int youwant = rs.getInt(1);
Top
回复人: telescope(望远镜) ( ) 信誉:105 2003-06-05 08:43:21Z 得分:0
?

不是SQL Server2000,而是MySQL
Top
回复人: yingyeqi(风中男孩) ( ) 信誉:100 2003-06-05 10:44:06Z 得分:0
?

很简单的呀,如果是使用mysql的话!
例如:
sql="select ID from test order by ID desc limit 0,1"
这样就可以取出来刚刚写入的那一条记录了呀????

(limit 0,1是mysql独有的,表示,从第0位开始,取1个记录)

Top
回复人: yingyeqi(风中男孩) ( ) 信誉:100 2003-06-05 10:47:01Z 得分:0
?

另外, kk_wyx(桃花岛) 所说的方法,在任何的数据库里都能用,不只是sqlserver

比如,在mysql中

sql="select count(*) as abc from test"
Conn.queryRS(conn,sql)
rs.getInt(abc)
就可以了
Top
回复人: telescope(望远镜) ( ) 信誉:105 2003-06-07 21:59:42Z 得分:0
?

哦? select语句是怎样保证读出的一定是我刚刚插入的那条记录呢? 如果在我刚刚插入记录的时候,有另一个人也插入了一条记录,谁能保证,我读出的那条,不是别人刚刚插入的那条呢?
limit只是有助于分页这类的功能,好象和我要求的功能关系不大....
Top
回复人: laoer(laoer) ( ) 信誉:85 2003-06-07 22:01:21Z 得分:10
?

在Jive中有一个多态的应用,处理自动增长字段,很好,我现在就是这样用的!
Top
回复人: Rangiggs(刘德华) ( ) 信誉:99 2003-06-07 22:07:13Z 得分:0
?

to  telescope(望远镜) 这个问题我也遇上过头大了好几天不过我现在做的是在这个方法中用了单线程做的,在这个方法中select max(.)来取的刚刚插入的记录的
Top
回复人: telescope(望远镜) ( ) 信誉:105 2003-06-14 04:32:48Z 得分:0
?

yingyeqi(风中男孩) select count(*)的方法肯定不行,难道你的数据从来都不进行删除操作?
删除一条记录后,你的方法立即出错!!
我现在用的就是楼上的方法,单机上做没问题,用户少时多数情况下也是正确的,但用户多,同时进行的操作比较多时就危险了!!!
Java怎么会出这么大的漏洞??
Top
回复人: gary_shi(Gary Shi) ( ) 信誉:115 2003-06-14 07:35:10Z 得分:0
?

用 SELECT MAX,插入方法用同步方法来做,即在插入函数前或语句块前用synchronized
Top
回复人: liusoft(凤梨罐头) ( ) 信誉:98 2003-06-14 09:49:24Z 得分:0
?

一条插入的SQL语句是没有办法做到的!

为了在不同数据库间移植我建议你不要使用自动增长字段,而改用自己管理的方式!
Top
回复人: zhxx(zhx) ( ) 信誉:115 2003-06-14 09:56:07Z 得分:0
?

jdk1.4中的jdbc statement对象可以返回自动产生的值
Top
回复人: zhxx(zhx) ( ) 信誉:115 2003-06-14 09:57:55Z 得分:0
?

要看JDBC驱动是否支持了
Top
回复人: chargefree(猫) ( ) 信誉:100 2003-06-14 10:20:30Z 得分:0
?

up

Top
回复人: telescope(望远镜) ( ) 信誉:105 2003-08-08 09:00:30Z 得分:0
?

to zhxx(Oracle9iAS@msn.com) 
怎样取得这个返回值,举例示意一下行吗?

Top
回复人: telescope(望远镜) ( ) 信誉:105 2003-09-15 12:21:10Z 得分:0
?

怎样取得反回值啊? 回答了我好结贴啊
Top
回复人: kknd97(绝地风暴) ( ) 信誉:105 2003-09-15 12:27:41Z 得分:0
?

1 建议你使用存储过程来完成对于表的插入。因为数据库的存储过程的执行是线程级安全的。
2 使用单子模式来生成主健。

我会的就是这两种方法,希望对你有帮助!

祝你好运!
Top
回复人: telescope(望远镜) ( ) 信誉:105 2003-09-22 09:15:23Z 得分:0
?

MySQL支持存储过程么?
Top
回复人: wuzc(老汉) ( ) 信誉:100 2003-09-22 09:35:23Z 得分:5
?

mysql不支持存储过程
Top

该问题已经结贴 ,得分记录: mim (5)、 zhaoxichao (5)、 airlulu (15)、 laoer (10)、 wuzc (5)、

打印文章】【进入社区】【发表评论】【返回顶部
论坛归档文章栏目
 PHP讨论
 asp讨论
相关链接

其他文章
· Linux 下有没有你 window上的Access 一样的....
· 头疼:这个文件有语法错误吗?
· js中如何传递变量?
· 一个问题,请高手提示
· 想转向JAVA不知道在WIN下开发用什么IDE最好....
· php中如何关闭com?
· 请教mysql数据库达人,关于数据库转换
· 给文件夹加个密码?
· 怎样从MySQL数据库中取得浮点数,而不是以字....
· 高高分求教!!能不能把写好的,sql语句导入....
热门文章
· 注册表打不开了!!!
· 请问高手如何破解还原精灵。
· 文件拒绝访问,为什么?谁来探讨一下文件设....
· 为什么程序无缘无故的告诉我"驱动器中没有软....
· 哪里有delphi7.0下载?在线恭候!50分
· 请问哪里有MSDN下载啊,高分酬谢
· 请教新闻订阅,如何发送电子邮件
· 哪里有创世纪的免费在线收看网址,高手们提供....
· 那里有还原精灵2002下载?
· 哪有Oracle数据库下载?