程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> select @@identity的應用(得到剛插入數據的ID)

select @@identity的應用(得到剛插入數據的ID)

編輯:關於SqlServer

使用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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved