如何提取刚刚插入到数据库记录的id 可以根据插入的内容进行筛选,不过最好是插入到一个只有一个字段的表中,然后Select *,读出后直接删除:Delete * 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是一个典范的数据库问题.搞数据库的都知道.到目前仍没有那个数据库能返回这个值的.要返回准确的ID.只能你插入的数据也需要有唯一的值,后用WHERE 子查询语句返回准确的ID. 插入一条记录,然后再查最后的一条记录这种方法我早先也用过,但这种方式有一个问题就是当有两个人以上同时向数据库里插入记录时就有问题了,你提出的id很可能不是你刚才插入的那条记录的id.这种情况常发生在访问量较大的网站数据库里.所在想找一种能够解决这种问题的方法.不知哪们大XX可告知. 自己生成ID,不要用系统给的读旧ID,生成新IDinsert intodeleteID一直保存在变量内 用DataSet而不是直接用执行insert into语句DataSet.Update会自动提取ID 用存储过程,然后用ADO.NET调用!-------------------------------------------------- 添加用户------------------------------------------------CREATE PROCEDURE InsertUser @Email NVARCHAR(40) = NULL, @Password NVARCHAR(10) = NULL, @Guid NVARCHAR(10) = NULL, @PKId INT = NULL OUTPUTAS SET NOCOUNT ON INSERT into UserAccount(Email, Password, Guid) values(@Email,@Password,@Guid) SELECT @PKId = @@IDENTITY RETURN 0------------------------------------------------GO insert into 后Select Max(Id) As CurrMaxId From TableName ..... 我的办法最简单select ident_current('table_name') 用 @@identity他返回最后生成的自动编号列的值。c#中是Decimal类型,在insert之后select @@indentity 有三种类似方法IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。详细情况看sql server 在线文档 可以使用存储过程的返回值,建议使用这种方法,因为这样有助于提高后台数据库的运行效率,同时可以最大限度减少表的锁定问题其余可以使用上头说的IDENT_CURRENT @@IDENTITY SCOPE_IDENTITY 等等最无聊的办法就是使用条件检索查询了 用 @@identity ,Sqlserver内自带的。最好用存储过程来增加记录,然后获取并返回@@identity就可以了。它返回最后生成的自动编号列的值。 ADO.NET 中,用COMMAND语句的@@IDENTITY得到值但是在并发的时候可能会出现问题或者用RECORDSET的ADDNEW 方法,然后UPDATE这样就能够返回需要的自增的ID 多谢大家给的提示,问题已经找到答案了.我是这样做的.在数据表里用个时间字段,而这个时间是由程插入的也就是DateTime CreateTime=DateTime.Now()然后执行"insert into TabName(CreateTime) values('"+CreateTime+"')"然后再"select * from TabName where CreateTime='"CreateTime"'"就行了,有关文章说时间类型虽然只能表示到秒一级,但实际在内部是以毫秒为单位的,所以这样做应该没什么问题了.我过我还是要把分送给各位了. 如何实现向指定的QQ号码发消息? 一个窗体上的所有控件都不显示了 数组比较问题 请问各位,如果让在.net下开发的程序,在非.NET平台下运行? ------------------各位大哥,救一下小弟--------------------- RichTextBox如何赋值? 超难的问题 sql+C# Microsoft Jet 数据库引擎打不开文件'\\xxx.xxx.x.xx\test.mdb'。它已经被别的用户以独占方式打开,或没有查看数据的权限 silverlight播放实时流? 好的。NET站推荐 有没有人知道,如何用C#处理2进制字符串 如何得到Excel工作簿的各项指
到目前仍没有那个数据库能返回这个值的.
要返回准确的ID.只能你插入的数据也需要有唯一的值,后用WHERE 子查询语句返回准确的ID.
不知哪们大XX可告知.
insert into
deleteID一直保存在变量内
DataSet.Update会自动提取ID
------------------------------------------------
-- 添加用户------------------------------------------------
CREATE PROCEDURE InsertUser
@Email NVARCHAR(40) = NULL,
@Password NVARCHAR(10) = NULL,
@Guid NVARCHAR(10) = NULL,
@PKId INT = NULL OUTPUT
AS
SET NOCOUNT ON
INSERT into UserAccount(Email,
Password,
Guid) values(@Email,@Password,@Guid)
SELECT @PKId = @@IDENTITY RETURN 0
------------------------------------------------
GO
他返回最后生成的自动编号列的值。c#中是Decimal类型,
在insert之后select @@indentity
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
详细情况看sql server 在线文档
最无聊的办法就是使用条件检索查询了
最好用存储过程来增加记录,然后获取并返回@@identity就可以了。它返回最后生成的自动编号列的值。
但是在并发的时候可能会出现问题
或者
用RECORDSET的ADDNEW 方法,然后UPDATE
这样就能够返回需要的自增的ID
我是这样做的.
在数据表里用个时间字段,而这个时间是由程插入的
也就是
DateTime CreateTime=DateTime.Now()
然后
执行"insert into TabName(CreateTime) values('"+CreateTime+"')"
然后再"select * from TabName where CreateTime='"CreateTime"'"
就行了,有关文章说时间类型虽然只能表示到秒一级,但实际在内部是以毫秒为单位的,所以这样做应该没什么问题了.
我过我还是要把分送给各位了.