社区
Web 开发
帖子详情
在插入数据后,如何得知其ID
keephope
2006-10-23 09:28:49
我用的是MSSQL数据库
表的ID是自动增长的
类型是int
在插入数据时我不去特意指定ID多少
(貌似指定了就非法)
后来需要在插入一条数据的同时
得到该条数据在表中的ID
请问如何得到?
用JAVA代码应该如何取出?
...全文
587
32
打赏
收藏
在插入数据后,如何得知其ID
我用的是MSSQL数据库 表的ID是自动增长的 类型是int 在插入数据时我不去特意指定ID多少 (貌似指定了就非法) 后来需要在插入一条数据的同时 得到该条数据在表中的ID 请问如何得到? 用JAVA代码应该如何取出?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
keephope
2006-11-07
打赏
举报
回复
用存储过程,添加成功以后回产生一个ID
CREATE PROCEDURE TT_Add
(
@变量
)
AS
INSERT INTO 表名
(
)
VALUES
(
)
SELECT
@@Identity AS EntryLogID
GO
---------------------------------------------------
这个是我看好的解决方法
但是存储过程目前我是不会写的
还得回去看书了
11月10日结贴吧
liltos
2006-11-04
打赏
举报
回复
这个问题困扰了很久,想了很多办法,可还是没搞定。
下次得去看一下UUID了。
daizhenbest
2006-11-03
打赏
举报
回复
ID不能认为指定
只允许数据库自己生成
目前我只能时候插入后再查询一次
并且按照降序排列
才能保证获得刚插入的数据的ID
----------------------------------------------------------
这样有个问题,就是并发操作的时候,有可能产生错误.
以前也遇到过这中情况.插入一条数据的时候,要修改另外一个表,而这个表的外键是第一个表的主键. 最后使用出发器解决的.
wyhlgx
2006-11-03
打赏
举报
回复
简单,你在用JAVA进行插入的时候,在代码前面定义一个用来接受的字符串数组,每插入一条成功后,就select id出来,然后放到字符串数组里,等下要的时候,就去取就是了。Do you know?
bgu
2006-11-03
打赏
举报
回复
SQL server 里的 @@IDENTITY 是线程安全的。
不会出现有:
--------------
插入后再查询一次获得的可不一定是正确的ID,如果两个用户同时插入了数据,顺序是:
user1: do insert
user2: do insert
user1: do query
user2: do query
user1得到的id是user2的
--------------
这样的情况。
可以查SQL server的帮助
fynshmily
2006-11-03
打赏
举报
回复
写错了.
ResultSet
hehe
fynshmily
2006-11-03
打赏
举报
回复
是刚插如的吗?
如果刚插入的可以用
sql = "select max(id列名) from 表名"
RequestSet rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getInt(1));//这里是取得rs返回结果集的第一列的值.
}
是个苯方法.
daichenghua
2006-11-02
打赏
举报
回复
用存储过程,添加成功以后回产生一个ID
CREATE PROCEDURE TT_Add
(
@变量
)
AS
INSERT INTO 表名
(
)
VALUES
(
)
SELECT
@@Identity AS EntryLogID
GO
hohowu
2006-11-02
打赏
举报
回复
oracle 下还有sequence可以用.
keephope
2006-11-02
打赏
举报
回复
ID不能认为指定
只允许数据库自己生成
目前我只能时候插入后再查询一次
并且按照降序排列
才能保证获得刚插入的数据的ID
廖雪峰
2006-11-02
打赏
举报
回复
插入后再查询一次获得的可不一定是正确的ID,如果两个用户同时插入了数据,顺序是:
user1: do insert
user2: do insert
user1: do query
user2: do query
user1得到的id是user2的
最好的办法是不要用自增主键,自己管理增长,但是也比较麻烦
或者,用uuid做主键,每次用UUID.randomUUID().toString()获得唯一的主键,这种方式不但保证无重复,还保证集群环境下无冲突
iwlk
2006-11-02
打赏
举报
回复
select @@IDENTITY
cseu
2006-11-01
打赏
举报
回复
自己在类中加个id属性不就行了
Sunny319
2006-11-01
打赏
举报
回复
mark
keephope
2006-11-01
打赏
举报
回复
String strSql = "INSERT INTO [table]( [column] ) VALUES ( "value" );SELECT @@IDENTITY AS 'result'";
int intResult = (int)ResultSset.ExecuteScalar( strSql );
-------------------------------------------------------------------------
ResultSset这个类并不是系统自己带的吧
----------------------------------------------------------------------------
最好不要用自增长的ID,要么自己增长,要么用uuid
我推荐uuid,任何环境下都没有问题,包括集群
-----------------------------------------------------------------------------
uuid是什么呢??
数据库方面有许多东西是我并不知道的
廖雪峰
2006-10-31
打赏
举报
回复
最好不要用自增长的ID,要么自己增长,要么用uuid
我推荐uuid,任何环境下都没有问题,包括集群
bgu
2006-10-31
打赏
举报
回复
Insert后,可以用这个系统变量得到:@@IDENTITY
You can try:
INSERT INTO [table]( [column] ) VALUES ( "value" )
PRINT( @@IDENTITY )
keephope
2006-10-31
打赏
举报
回复
而且最重要的是
ResutSet.executeQuery(sql);
根本就没有这个方法
我试过类似的思路
依然是不行的
当ID是唯一,而名字不唯一的时候
如何获得其ID呢?
bgu
2006-10-31
打赏
举报
回复
Java我不是很懂。哈。不过既然你是用SQL server那就是一样D。
在SQL server中,SQL语句可以用分号分开即可。Oracle则是不行。
下面的code可以参考下:
String strSql = "INSERT INTO [table]( [column] ) VALUES ( 'value' );SELECT @@IDENTITY AS 'result'";
int intResult = (int)ResultSset.ExecuteScalar( strSql );
bgu
2006-10-31
打赏
举报
回复
String strSql = "INSERT INTO [table]( [column] ) VALUES ( "value" );SELECT @@IDENTITY AS 'result'";
int intResult = (int)ResultSset.ExecuteScalar( strSql );
加载更多回复(12)
sqlite多行
插入
_sqlite
插入
多条
数据
并返回添加行的自增
ID
主要是采集设备上报的一些
数据
,通过
数据
在后台进行分析解析,然后将解析后的结果存到
数据
库中。由于涉及到画面的
数据
绑定,并不能每添加一次
数据
库就进行一次
数据
库的查询,所以在写入到
数据
库...
MySQL 批量
插入
并返回批量自增
ID
的方法
在MySQL
数据
库表中
插入
大量记录时,若逐条
插入
时,性能非常性,也比较耗,因此MySQL提供批量
插入
记录的方法,具体语法为: Insert into myTable(Field1,Field2,......但有一个问题,就是
插入
数据
后,无法
得知
插入
mybatis-plus设置
id
自增,
插入
数据
。
mybatis-plus设置
id
自增,
插入
数据
没修改前 没修改前 这是我的实体类。@Data @AllArgsConstructor @NoArgsConstructor @ToString public class Company { private Integer
id
; private String c
id
; private ...
mysql
插入
数据
时设置
id
_Mysql
数据
库中,设置
id
为自动增加,向
数据
库中
插入
数据
时,SQL语句怎么写?...
随着 MySQL 8.0.16 的发布,我们为 MGR 添加了一些功能,以增强其高可用性。其中一个功能是能够在某些情况下启用已离开组的成员自动重新加入,而无需用户干预。为了理解这个功能的好处以及如何使用它,我们将快速...
MyBatis如何获取新
插入
数据
主键?
MyBatis如何获取新
插入
数据
主键?
插入
一条
数据
到之后,我们总是想用这条新纪录的
ID
做点别的事情,但大量的现实告诉我们新增修改删除方法返回值永远都是受到影响的行数!并且有的土豪公司用的可能不是MySql,或许是...
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章