背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3389.html    注册17xie 一起来写书 实现您的出书梦想!

l          LockType:可读写Long类型,指定打开Recordset所使用的记录锁定的方法。默认值是只读,对应于forward-only游标的只读特性。

l          MaxRecords:可读写Long类型,指定SELECT查询或存储过程返回的最大记录条数,默认值为0,即全部返回。

l          RecordCount:只读Long类型,如果Recordset支持近似定位或支持书签,则返回带可流动游标的Recordset所含有的记录数;如果不支持,必须使用MoveLast方法以取得确实覆盖了所有记录的准确的RecordCount数值。

l          Source:可读写String类型,可以是SQL语句、表名、存储过程或相关Command对象名。如果提供了Command对象名,则Source将返回Command.CommandText的值。利用Open方法的参数LngOption可以指定提供给Source值的类型。

l          Status:只读Long类型,表明对Recordset进行批处理或其他多记录(Bulk)操作后的状态。

2)该对象的常用方法

l          AddNew:向可更像你的Recordset添加一条新记录。

l          Cancel:取消异步查询的执行,终止存储过程或复合SQL语句创建的多个Recordset

l          CancelBatch:取消LockEdit值为BatchOptimisticRecordset的即将生效的批量更新操作。

l          Close:关闭Recordset对象,以后可以重新设置Recordset的属性并使用Open方法来再度访问Recordset

l          Delete:如果RecordsetLockEdit属性值未设为adLockBatchOptimistic,则立刻从Recordset和相应的表中删除当前记录。

l          Move:从当前记录移动记录指针。MoveFirst是移动记录指针到第一条记录;MoveLast是移动记录指针到最后一条记录;MoveNext是移动记录指针到下一条记录;MovePrevious是移动记录指针到上一条记录。

l          Open:在一个活动CommandConnection对象上打开一个Recordset

l          Requery:重新从表中获取Recordset的内容,等效于Close后再Open。它是一个资源集中型操作。

l          Resync:重新从表中获取部分Recordset的内容。

l          Update:使对Recordset的修改对底层数据源中的表生效。对于批量操作,Update方法只使修改对本地Recordset生效。

l          UpdateBatch:使对指针类型的RecordsetLockType属性值为adBatchOptimisticCursorType属性值为adOpenKeysetadOpenStatic)所做的修改对底层数据源中的表生效。

要想在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是单击菜单【工程】/【引用】命令,打开【引用】对话框,在列表中选中【Microsoft ActiveX Data 0bject 2.0 Library】或ADO的其他版本选项,如图7-24所示。

7-24  【引用】对话框

使用ADO对象编程的大致流程如下:

1)打开Connection对象

打开一个到数据源的连接,即Connection对象的VB代码如下:

Dim cn As ADODB.Connection  '声明ADODB.Connection对象变量

Dim strCN As String  '声明存放连接串的字符串变量

Set cn = New Connection

'实例化Connection对象,生成连接串(ConnectionString)对不同的数据源有不同的连接串

strCN = "Provider=Microsoft.Jet.Oledb.3.51;User ID=Admin;"& _

"Data Source=D:\VB6\STUDNET.mdb;"

cn.Open strCN ' 调用Connection对象的方法Open连接数据源

除了使用Connection对象的Open方法以外,还可通过Recordset对象的Open方法快捷地创建到数据源的连接。这充分体现了ADO的灵活性。

利用Connection对象能连向不同数据库,常用的连接方式有:

1strCN="Provider=SQLOLEDB.1;User ID=sa;Password=;Initial Catalog=student;Data Source=qxz"

其中SQLOLEDB.1为提供者,表示由OLE DB连接SQL ServerUser ID指定用户名,Password指定用户口令,Initial Catalog指定连接的数据库名,Data Source指定数据库服务器名。

2strCN="Provider=MSDASQL.1;User ID=sa;Password=sa;Initial Catalog=Student;Data Source=student;"

其中MSDASQL.1为提供者,表示由ODBC连接SQL Server,这里Data Source指定的是ODBC数据源名,其它参数含义同上。

3strCN="FileDSN=studentinfo.dsn;UID=sa;PWD=sa" '通过文件数据源连接,其中studentinfo.dsn为预先创建的文件ODBC数据源。

4strCN="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=student.mdb"  'Microsoft.Jet.OLEDB.4.0连接ACCESS数据库

5strCN="Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=mydb;Persist Security Info=True"  '连接到Oracle数据源,mydb为数据库

2)创建Command对象

Dim cmd As ADODB.Command '定义Command对象cmd

Set cmd=New Command '实例化Command对象cmd

3)执行查询(以Command对象为例)

Dim rs As New ADODB.Recordset  '定义Recordset对象rs

Set cmd.ActiveConnection = cn  '命令对象cmd的连接绑定到连接对象cn

cmd.CommandText ="SELECT * from student"  '指定SQL命令

Set rs = cmd.Execute '执行查询,并把返回的记录集放在记录集对象rs中。

上述的代码仅仅是一种查询途径,此外,ADOConnection对象的Execute方法和Recordset对象的Open方法也提供了查询能力。返回的结果可以被保存在一个Recordset对象实例中以便后续的数据处理和操纵。例如:

Dim rs As New ADODB.Recordset

rs.Open cmd,cn,adOpenDymanic,adLockBatchOptimistic  'Recordset对象通过连接对象cn,命令对象cmd打开记录集。

其中adOpenDymanic为游标类型,游标类型含义参阅如下:

l          adOpenDynamic用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的Recordset中各种类型的移动。如果提供者支持,可使用书签。

l          adOpenKeyset其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许Recordset中各种类型的移动。

l          adOpenStatic提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许Recordset中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端(ADORRecordset对象时唯一允许使用的游标类型。

l          adOpenForwardOnly除仅允许在记录中向前滚动之外,其行为类似静态游标。这样,当需要在Recordset中单程移动时就可提高性能。

命令中adLockBatchOptimistic指定锁定(并发)类型,锁定(并发)类型与含义如下:

l          adLockReadOnly(默认值)只读——不能改变数据。

l          adLockPessimistic保守式锁定(逐个)——提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。

l          adLockOptimistic开放式锁定(逐个)——提供者使用开放式锁定,只在调用Update方法时才锁定记录。

l          adLockBatchOptimistic开放式批更新——用于批更新模式(与立即更新模式相对)。

记录集常用属性还有CursorLocation,它有两个值为:adUseClientadUseServer,表示是使用服务器端游标还是使用客户端游标,设置方式为:

rs.CursorLocation = adUseClient

另外在SQL脚本的生成方式上,通常可以借助Parameters/Parameter对象来完成。

4)显示和操纵数据

查询结果由Recordset对象封装。对数据的操纵可以通过Recordset对象提供的成员(属性和方法)来完成。

rs.MoveFirst  '将游标指针移到第一条记录

Do While Not rs.EOF  '判断EOF标记属性(End of file

Debug.Print rs!sno & vbTab & rs!sname & VbTab & rs!ssex

rs.MoveNext '将游标指针移到下一条记录

Loop

上述代码将Recordset中的各行记录打印在Visual Basic的立即执行窗口中。

5)更新记录

使用Recordset对象来完成Update操作。

rs.Close '关闭之前建立的结果集à打开新的结果集,具有写操作权限

rs.Open "Customers",cn,adOpenDynamic,adLockOptimistic,adCmdTable

rs.MoveFirst  '虽无必要,但可能是一个良好的习惯

rs!sname="李淘"  '对相应字段赋予新值

rs.Update '真正更新到物理数据库中

除了Update以外,写操作还包括AddNew(添加一条新记录)和Delete(删除一条新记录)。另外,Recordset支持批处理,但这些特征需要由低层的OLE DB Provider支持。当写操作出现错误时,可根据错误描述(访问ADOErrorVisual BasicErr对象)来判断原因。另一个需要注意的是,当使用Recordset对象完成写操作时,需要预先指定Recordset对象实例非只读。

6)收尾工作

在这个阶段应该显式的释放相应的资源,如果不做的话,通常Visual Basic会自动释放和回收资源。代码如下:

rs.Close '关闭记录集

Set rs = Nothing '释放记录集占有的资源

Set cmd = Nothing '释放命令对象占有的资源

cn.Close '关闭连接对象

Set cn = Nothing '释放连接对象占有的资源

ADO的灵活性还体现在,ADOConnection 对象或Command对象的Execute方法能直接递交SQL命令到数据源,由数据源直接执行。能递交的命令主要包括:CREATE TABLE等数据定义命令、DELETEINSERTUPDATE、数据库存储过程名等。如:

cmd.CommandText ="drop table student"  ' 指定SQL命令

Set rs = cmd.Execute ' 递交并执行drop table student命令,删除student表。

7.4  应用举例

【实例7.8  使用ADO控件设计一个数据库管理程序,使之具有浏览、更新、添加和删除记录的功能。程序启动时,界面如图7-25所示。单击ADO控件的对应按钮,可以浏览数据表中的内容。单击【添加】按钮出现如图7-26所示的空记录界面,输入信息后在最后一个【性别】文本框中按回车键可继续添加,直到用户按下【更新】按钮。单击【删除】按钮程序显示警告,如图7-27所示,确认后将删除当前记录。用户修改或添加记录后,单击【更新】按钮时才会将最后的更新一次性写入数据表,如图7-28所示。

 

7-25  程序启动时的界面                        7-26  添加记录界面

 

7-27  删除记录界面                            7-28  更新记录界面


字数:7242    最后更新:1年以前 [09-06 03:33]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第七章  [后一页]:第七章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号