关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>SQL Server>>正文|使用Recordset方法新增及更新资料

使用Recordset方法新增及更新资料

[ 来路:21kn.com    时间:2007-7-8 18:53:17    点击: ]

 

使用 SQL 指令来新增或更新数据库中的资料是非常方便也是大部分开发者所爱用的的方法, 不过当你要进行多笔不同的更新时, SQL 的方法看几来就不是很完美, 今天的文章将介绍另一个选择, 使用 Recordset 方法来新增或更新资料 

建立 Recordset 

建立 Recordset 你可以使用以下的方法, 在这篇文章中我们将重点放再第三种方法 

由查询 (Query) 建立 Recordset 对象 
Set oConn = Server.CreateObject("Adodb.Connection") 
oConn.Open "你的资料来源名称 DSN" 
Set oRs = oConn.Execute("Select * From SomeTable") 


藉由使用 Connection 对象的 Execute 方法, Recordset 对象将会被自动建立, 这个方法也就是前面所说的 SQL 指令的方法 
  

由资料表 (Table) 建立 Recordset 对象 
Set oConn = Server.CreateObject("Adodb.Connection") 
oConn.Open "你的资料来源名称 DSN" 
Set oRs = oConn.Execute("SomeTable") 


另一种使用 Execute 的方法, 只是把 SQL 指令改为资料表名称, 和第一种方法不同的是他只传回这个资料表的资料而不具备更新资料的能力 
  

直接建立 Recordset 对象 
Set oRs = Server.CreateObject("Adodb.Recordset") 
oRs.Open Source, ActiveConnection, CursorType, LockType, Options 


  

新增资料 

有说有作才是真功夫, 来作实作的例子, 这一次我们将使用北风数据库里的 Categories 资料表, 因为这个资料表最简单, 这个资料表记载产品的类别, 剧情如下, 我们想要新增一笔类别, 你可以这么做 

<% 
Const adOpenKeyset = 1, adLockPessimistic = 2  'ADO 常数的宣告 
  
sConnString = "Provider=SQLOLEDB;" _  '在这个例子我们使用 OLEDB Provider 
  & "Data Source=你的SQL服务器名称;" _ 
  & "Initial Catalog=Northwind;" _ 
  & "User Id=sa;" _ 
  & "Password=" 
  
Set oRs = Server.CreateObject("Adodb.Recordset") 
oRs.Open "Categories", sConnString, adOpenKeyset, adLockPessimitic 
  
oRs.AddNew  '使用 Recordset 的 AddNew 方法来新增资料 
oRs("CategoryName") = "测试类别" 
oRs("Description") = "这是测试类别说明" 
oRs.Update  '储存变更 
oRs.Close 
Set oRs = Nothing 
%> 

更新资料 

现在来看看 Recordset 如何更新资料, 很趣味的是和前面新增的方法比较起来更加简单, 只要把 oRs.AddNew 这一行去掉即可, 哪么是哪一笔资料会被更新呢? 这里我们假设你对 Recordset 浏览的五种方法 (Move, MoveNext,...) 有一定的认识, 按内你大概猜到答案了, 也就是 Cursor 所在的资料会被更新! 来看个例子, 好比说我们想将 

<% 
Const adOpenKeyset = 1, ... 
...... 省略 ...... 
Set oRs = Server.CreateObject("Adodb.Recordset") 
oRs.Open "Categories", sConnString, adOpenKeyset, adLockPessimitic 
  
oRs("CategoryName") = "更新类别" 
oRs("Description") = "这是更新类别说明" 
oRs.Update 
oRs.Close 
Set oRs = Nothing 
%> 

执行的结果你会发现第一笔资料被更新了! 

在 Recordset 的新增或更新资料又可以分为两种模式, 立即模式 (Immediate Mode) 和批次模式 (Batch Mode), 在立即模式中每次当你呼叫 Update 数据库会立即作变更, 在前一个例子中的 Recordset 开启, 我们指定了 LockType 属性为 adLockPessimistic , 这代表当你在进行资料更新的时候, Data Provider 会将这些资料锁定以防止同时有其它的使用者更改相同的资料, 这就是立即模式的更新! 

相对于立即模式, 当你呼叫 Update 时批次模式下会先将变更存在 ADO 的快取 (Cache), 直到你呼叫 UpdateBatch 方法被呼叫, 数据库才会一次进行所有的变更, 要使用批次模式你必须指定 LockType 属性为 adLockBatchOptimistic , 例如 

<% 
Const adOpenKeyset = 1, adLockBatchOptimistic = 4 
...... 省略 ...... 
Set oRs = Server.CreateObject("Adodb.Recordset") 
oRs.Open "Categories", sConnString, adOpenKeyset, _ 
  adLockBatchOptimistic 
...... 
多笔变更 
...... 
oRs.UpdateBatch 
oRs.Close 
Set oRs = Nothing 
%> 

用惯了 SQL 指令的方法, 你可能还不太习惯 Recordset 的做法, 其实方法的选择是依情况而定的, 一般简单的情况用 SQL 的方法是较方便的, 但较进阶的更新例如多个值的更新, 就一定要用 Recordset 的做法! 在以后的文章我们还会再多介绍一些例子! 

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:SQL Server的Inner Join及Outer Join  下一篇:用SQL Server为Web浏览器提供图像(二)

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号