搜索:
首页 >> 数据库 >> MsSQL教程 >> select @@identity的应用(得到刚插入数据的ID)

select @@identity的应用(得到刚插入数据的ID)

2009-9-10 来源:刑发明的空间 投递文章

使用select @@identity 得到刚插入数据的ID

1.适用于所有 ADO 版本

<%Dim loConn, lsSQL, loRs

Set loConn = CreateObject("ADODB.Connection")
' 建立数据库连结
loConn.Open "Provider=SQLOLEDB; Data Source=JACKIE; Initial Catalog=pubs; User ID=sa; Password= "
'新增一笔数据到数据库内
lsSQL = "INSERT INTO tMembers (MemberName) VALUES ('Manohar')"
' 执行 SQL 叙述
loConn.Execute(lsSQL)
' 透过 @@IDENTITY 函数取得最后一笔数据的 Identity 字段值,并传给 IIID 变量
lsSQL = "SELECT @@IDENTITY AS NewID"
Set loRs = loConn.Execute(lsSQL)
llID = loRs.Fields("NewID").value
' 关闭数据库连结
loConn.Close()
Set loConn = Nothing%>

2.适用于 ADO 2.0 以后的版本

<%

Dim loConn, lsSQL, loRs
Set loConn = CreateObject("ADODB.Connection")
' 建立数据库连结
loConn.Open "Provider=SQLOLEDB; Data Source=JACKIE; Initial Catalog=pubs; User ID=sa; Password= "'
'新增一笔数据到数据库内,并随即取得 Identity 字段值
lsSQL = "INSERT INTO tMembers (MemberName) VALUES ('Manohar');" &_
        "SELECT @@IDENTITY AS NewID;"
' 执行 SQL 叙述
Set loRs = loConn.Execute(lsSQL)
' 利用数据集合对象中的 NextRecordset() 方法将 SQL 叙述中的第二个叙述执行结果传给loRs 
' 变数 
Set loRs = loRs.NextRecordSet()    '这一条很重要,否则得不到想要的结果!!!!!!
' 将最后一笔数据的 Identity 字段值传给 IIID 变量
llID = loRs.Fields("NewID").value
' 关闭数据库连结
loConn.Close()
Set loConn = Nothing
%>

3.适用于所有 ADO 版本

Dim loConn, lsSQL, loRs

Set loConn = CreateObject("ADODB.Connection")
' 建立数据库连结
loConn.Open("DSN=myDSN;UID=something;PWD=Something;")
' 新增一笔数据到数据库并取得取得最后一笔数据的 Identity 字段值
lsSQL = "SET NOCOUNT ON;" &_
        "INSERT INTO tMembers (MemberName) VALUES ('Manohar');" &_
        "SELECT @@IDENTITY AS NewID;"
' 执行 SQL 叙述
Set loRs = loConn.Execute(lsSQL)
' 将 Identity 字段值传给 IIID 变量
llID = loRs.Fields("NewID").value
' 关闭数据库连结
loConn.Close()
Set loConn = Nothing

第二种方法跟第三种方法很像,只是在 SQL 叙述中多定义了一行 SET NOCOUNT ON,什么叫做 SET NOCOUNT ON 呢?在 SQL 叙述中不会传回数据集合对象的叙述 (例如:Insert, Delete, Update......等等)都会被 SET NOCOUNT ON 略过不计,只有那些会传回数据集合的叙述才会被计算,在第三个范例中只有 "SELECT @@IDENTITY AS NewID; 这一段叙述才会被视做数据集合并被计算,于是乎我们可以以第三个方法延伸出第四种方式。

4.

<%

'一次新增两笔数据进数据库,并取得个别的 Identity 字段值
lsSQL = "SET NOCOUNT ON;" &_
        "INSERT INTO tMembers (MemberName) VALUES ('John'); " &_
        "SELECT @@IDENTITY AS NewID;" &_        
        "INSERT INTO tMembers (MemberName) VALUES ('Jane'); " &_
        "SELECT @@IDENTITY AS NewID;"
' 执行 SQL 叙述
Set loRs = loConn.Execute(lsSQL)
' 取得第一笔资料的 Identity 并传给IIID1 变数
llID1 = loRs.Fields("NewID").value
'  取得第二笔资料的 Identity 并传给IIID1 变数
Set loRs = loRs.NextRecordSet()
llID2 = loRs.Fields("NewID").value
Tags:identity  数据  id  sql server 
相关文章
手机版 MsSQL教程 Asp之家 Aspxhome.com
闽ICP备06017341号