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

来源:刑发明的空间 时间:2009-09-10 11:24:00 

使用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

标签:identity,数据,id,sql,server
0
投稿

猜你喜欢

  • 实现文字放大效果Javascript源码

    2010-03-17 20:46:00
  • 捕捉并保存ASP运行错误的函数代码

    2012-11-30 20:24:43
  • ASP程序与SQL存储过程结合使用详解

    2011-03-25 10:50:00
  • sql server 中删除默认约束的通用sql脚本

    2009-02-01 17:23:00
  • 在Internet Explorer中正确使用MSXML

    2009-02-22 18:41:00
  • ASP|HTML]单引与双引号

    2008-03-12 11:42:00
  • 讲解数据库加密技术的功能特性与实现方法

    2008-12-18 14:24:00
  • 用ASP和XMLHTTP分析远程XML文件

    2007-12-12 12:48:00
  • Linux mysql安装修改root密码服务

    2010-10-14 13:59:00
  • 如何检测用户第一次访问我的网站并显示友好信息?

    2009-11-25 20:33:00
  • ActionScript3.0是革命性的

    2008-05-01 12:36:00
  • ASP 使用Filter函数来检索数组

    2011-04-30 16:49:00
  • 网页颜色变黑白CSS代码 适合所有类型网站

    2010-04-21 10:37:00
  • Flash在某些多标签浏览器中的“伪沙箱”问题

    2011-01-06 12:37:00
  • SQL注入攻击成为新威胁将挑战操作系统安全

    2009-03-16 15:13:00
  • SQL Server 数据库操作实用技巧锦集

    2009-01-20 13:20:00
  • 详解php如何合并身份证正反面图片为一张图片

    2023-05-22 10:44:46
  • 使用 WinHttpRequest 伪造 Referer (附实战代码)

    2010-08-24 18:28:00
  • 实例学习call、apply、callee用法

    2009-03-27 17:56:00
  • SQL离前端有多远?

    2009-05-21 10:37:00
  • asp之家 网络编程 m.aspxhome.com