某表中有一自增字段,怎样返回刚刚插入的一条记录的自增字段值?
| 某表中有一自增字段,怎样返回刚刚插入的一条记录的自增字段值? |
|
|
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)、
|
| |
|
|
|
|