网络编程
位置:首页>> 网络编程>> 数据库>> select @@identity的应用(得到刚插入数据的ID)

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

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

标签:identity,数据,id,sql,server

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

0
投稿

猜你喜欢

  • 大家都熟悉迅雷看看里面的电影人气指数这个小图标吧先看看我的效果图再看看迅雷的截图比较好看,是根据电影的人气指数来显示热度,下面我们就来模仿一
  • cmake-2.8.3.tar.gzmysql-5.5.8.tar.gz一,cmake-2.8.3的安装:tar -zxf cmake-2.
  • 你已经在上面取出w打头记录的例子中看到了LIKE的用法。LIKE判定词是一个非常有用的符号。不过,在很多情况下用了它可能会带给你太多的数据,
  • 在制作表单的时候,我们往往用CSS来重新定义表单元素(如输入框、按钮等)的样式,以便看起来更加美观。而表单中的很多不同元素(如输入框、提交按
  • 如何做一个文本搜索? 比较简单,见下:<%Head = "搜索"SearchStri
  • 和大多数的语言脚本一样,学习ASP最好的方法就是亲身尝试ASP,使用你自己的系统安装PWS或者IIS。你可以边学习边在你自己的服务器上测试A
  • ExpiresAbsolute 属性指定缓存于浏览器中的页的到期日期和时间语法Response.ExpiresAbsolute [
  • 折纸是日本著名的折叠纸张的艺术。折纸艺术只是使用一些不同的折叠方式,却能被用各种各样的方式组合成错综复杂的设计。而受折纸启发的logo设计则
  • 使用方法和步骤如下:step1检测是否已经启用ServiceBroker,检测方法:SelectDATABASEpRoPERTYEX(
  • 备注:Ken Henderson 从开发者的角度来阐述了SQL SERVER 2000内存管理的内部机制简介在本专栏中,我们将从一个开发者的
  • 方法一1. 下载MySQL源码分发包,不用区分操作系统,我们需要的东西是一样的;2. 重命名自己的mysql的data目录下的mysql文件
  • 一直以来,ACCESS数据库中的申报数据在分公司与总公司之间传递,用EXCEL或DBASE、TXT甚至ACCESS等格式,我总觉得不太理想。
  • 这个翻滚代码没有使用什么marquee或者其它位移方法,而是每隔一秒把列表最顶端的那个li删掉,把这个li里面的内容插入到最底端新生成的li
  • 规律:半角空格的 charCode 为 32, 全角空格为 12288. 其他半角字符 ( 33 – 126 ) 与全角 ( 65281 –
  • 我一般看书喜欢做笔记,这份笔记不知道是什么时候看的什么书做的,也忘了是否是摘自其他地方,总之一份汇总,应该适合初学者,对于Javascrip
  • Window.Open详解 一、window.open()支持环境:JavaScript1.0+/JScript1.0+/Nav2
  • 不夸张地说,XML正在接管这个世界,正在成为今天一切Web服务和大多数SOA的基础。XML本身并非一种技术,而是程序设计语言,可支持开发者为
  • 使用MySQL,目前你可以在三种基本数据库表格式间选择。当你创建一张表时,你可以告诉MySQL它应该对于表使用哪个表类型。MySQL将总是创
  • 这本入门手册是否合适你?我只想告诉你我非常喜欢这本书。我对Microsoft Access的经验足以让我跳过这本傻瓜系列教材,但是实际情况是
  • 八卦为先八卦是种优良品质,特别是用在技术上时。来看几个Reset CSS的八卦问题吧:你知道世界上第一份reset.css在哪么?* { m
手机版 网络编程 asp之家 www.aspxhome.com