2024年1月6日发(作者:)
Connection对象介绍
Connection对象支持许多属性,可以利用这些属性来操作当前的连接状态或者获取一些基本的Connection对象的信息.有一些属性是只读的,而另一些属性是可读写的.
utes属性
Attributes属性设置或返回一个整型值,它用来指示对象的一项或多项特性.对于Connection对象,Attributes属性为读/写,并且其值可能为以下任意一个或多个XactAttributeEnum值的和(默认为零).
▲AdXactCommitRetaining:执行保留的提交,即通过自动调用CommitTrans启动新事务。并非所有提供者都支持该常量。
▲AdXactAbortRetaining:执行保留的中上,即通过自动调用RollbackTrans启动新事务。并非所有提供者都支持该常量。
dTimeout属性
CommandTimeout属性设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。默许值为30,指示在终止尝试和产生错误之前执行命令期间需要等待的时间。使用Connection对象或Command上的CommandTimeout属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消Execute方法调用。如果在CommandTimeout属性中设置的时间间隔内没有完成命令执行,将产生错误,然后ADO将取消该命令。如果将该属性设置为零,ADO将无限期等待直到命令执行完毕。
tionString属性
ConnectionString属性设置或返回字符串值,这个字符串值包含用来建立到数据源的连接的信息.使用ConnectionString属性,通过传递包含一系列由分号分隔的argument=value语句的详细连接字符串可指定数据源。ADO支持ConnectionString属性的四个参数,任何其他参数将直接传递到提供者而不经过ADO处理。
▲Provider参数:指定用来连接的提供者名称。
▲File Name参数:指定包含预先设置连接信息的特定提供者的文件名称。
▲Remote Provider参数:指定打开客户端连接时使用的提供者名称。
▲Remote Server参数:指定打开客户端连接时使用的服务器的路径名称。
例:使用Connection对象的ConnectionString属性的示例代码
Public Sub ConnectionString_Example()
Dim connection1 As tion
Dim connection2 As tion
Dim connection3 As tion
Dim connection4 As tion
'不使用数据源名(DSN)打开连接
Set connection1=New tion
tionString="driver={SQL Server};"&_"server=Myserver;uid=sa;pwd=password;database=pubs"
tionTimeout=30
'使用DSN和ODBC标记打开连接。
Set connection2=New tion
tionString="DSN=Pubs;UID=sa;PWD=password;"
'使用DSN和OLE DB标记打开连接。
Set connection3=New tion
tionString="Data Source=Pubs;User ID=sa;Password=password;"
'使用DSN和单个参数而非连接字符串打开连接。
Set connection4=New tion
"Pubs","sa","pwd"
End Sub
注意:如果没有复选“引用”对话框中的Data Access Object,程序会出错。在上面的程序段中,先定义了4个Connection对象的变量。这4个变量分别对应于4种不同的连接方式。语句Set connection1=New tion是创建一个新的Connection对象,然后再调用Connection对象的Open方法来打开数据库连接。
tionTimeout属性
ConnectionTimeout属性设置或返回指示等待连接打开的时间的长整型值(单位为秒)。其默认值为15,指示在终止尝试和产生错误前建立连接期间所等待的时间。如果由于网络拥塞或服务器负载过重导致的延迟使得必须放弃连接尝试时,请使用Connection对象的ConnectionTimeout属性。如果打开连接前所经过的时间超过ConnectionTimeout属性上设置的时间,将产生错误并且ADO将取消该尝试。如果将该属性设置为零,ADO将无限等待直到连接打开。
tDatabase属性
DefaultDatabase属性可设置或返回指定Connection对象上默认数据库的名称。
例:使用Connection对象的DefaultDababase属性的示例代码。
Public Sub DefaultDatabase_Example()
Dim connection1 As tion
Set connection1=New tion
tionString="driver={SQL Server};"&_
"server=Myserver;uid=sa;pwd=password"
tDatabase="pubs"
End Sub
ionLevel属性
IsolationLevel属性指出Connection对象如何处理对象。
属性
Mode属性设置或返回以下某个ConnectModeEnum的值,指示用于更改在Connection中的数据的可用权限。
▲AdModeUnknown:默认值。表明权限尚未设置或无法确定。
▲AdModeRead:表明权限为只读。
▲AdModeWrite:表明权限为只写。
▲AdModeReadWrite:表明权限为读/写。
▲AdModeShareDenyRead:防止其他用户使用读权限打开连接。
▲AdModeShareDenyWrite:防止其他用户使用写权限打开连接。
▲AdModeShareExclusive:防止其他用户打开连接。
▲AdModeShareDenyNone:防止其他用户使用任何权限打开连接。
er属性
Provider属性指出当前数据提供者的名字,或者是使用Open()方法时没有指定名字的情况下所使用的提供者名。但是,调用Open方法时如果在多处指定提供者可能会产生无法预料的后果。如果没有指定提供者,该属性将默认为MSDASQL(Microsoft OLE DB Provider for ODBC)。
例:使用Connection对象的Provider属性的示例代码。
Public Sub Provider_Example()
Dim connection1 As tion
Set connection1=New tion
er=".3.51"
"C:","admin",""
End Sub 属性
State属性对所有可应用对象都可用,它用来说明其对象状态是打开或关闭的。可以随时使用State属性来确定指定对象的当前状态。该属性是只读的,并返回下列常量之一的长整型值。
▲AdStateClosed:默认值,指示对象是关闭的。
▲AdStateOpen:指示对象是打开的。
▲AdStateConnecting:指示Recordset对象正在连接。
▲AdStateExecuting:指示Recordset对象正在执行命令。
▲AdStateFetching:指示Recordset对象的行正在被读取。
例:使用Connection对象的State属性的示例代码。
Public Sub State_Example()
Dim connection1 As tion
Dim statestring AS String
Set connection1=New tion
tionString="DSN=Pubs;UID=sa;PWD=password;"
Select Case
case adStateClosed
statestring="adStateClosed"
case adStateOpen
statestring="adStateOpen"
End Select
'显示连接的状态。
MsgBox ":",,statestring
End Sub
Recordset对象方法 Open方法
Source,ActiveConnection,CursorType,LockType,Options
SourceRecordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。 ActiveConnectionRecordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。
CursorTypeRecordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:--------------------------------------------------------------------------------------常数 常数值 说明
--------------------------------------------------------------------------------------adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。adOpenKeyset 1 启动一个Keyset类型的游标。adOpenDynamic 2 启动一个Dynamic类型的游标。adOpenStatic 3 启动一个Static类型的游标。--------------------------------------------------------------------------------------以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。
--------------------------------------------------------------------------------------Recordset属性 adOpenForwardOnly adOpenKeyset
adOpenDynamic adOpenStatic--------------------------------------------------------------------------------------AbsolutePage 不支持 不支持 可读写 可读写AbsolutePosition 不支持 不支持 可读写 可读写ActiveConnection 可读写 可读写 可读写 可读写BOF 只读 只读 只读 只读Bookmark 不支持 不支持 可读写 可读写CacheSize 可读写 可读写 可读写 可读写CursorLocation 可读写 可读写 可读写 可读写CursorType 可读写 可读写 可读写 可读写EditMode 只读 只读 只读
只读EOF 只读 只读 只读 只读Filter 可读写 可读写 可读写 可读写LockType 可读写 可读写 可读写 可读写MarshalOptions 可读写 可读写 可读写 可读写MaxRecords 可读写 可读写 可读写 可读写PageCount 不支持 不支持
只读 只读PageSize 可读写 可读写 可读写 可读写RecordCount 不支持 不支持 只读 只读Source 可读写 可读写 可读写 可读写State 只读 只读 只读 只读Status 只读 只读 只读 只读AddNew 支持 支持 支持 支持CancelBatch 支持 支持 支持 支持CancelUpdate 支持 支持 支持 支持Clone 不支持 不支持Close 支持 支持 支持 支持Delete 支持 支持 支持 支持GetRows 支持 支持 支持 支持Move 不支持 支持 支持 支持MoveFirst 支持 支持 支持 支持MoveLast 不支持 支持 支持 支持MoveNext 支持 支持 支持 支持MovePrevious 不支持 支持 支持 支持NextRecordset 支持 支持 支持 支持Open 支持 支持 支持 支持Requery 支持 支持 支持 支持Resync 不支持 不支持 支持 支持Supports 支持 支持 支持 支持Update 支持 支持 支持 支持UpdateBatch 支持 支持 支持 支持--------------------------------------------------------------------------------------其中NextRecordset方法并不适用于Microsoft Access数据库。 SQL,CONN,A,B 全接触! SQL,CONN,A,B
A:
ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动
ADOPENKEYSET(=1) 只读,当前数据记录可自由移动
ADOPENDYNAMIC(=2) 可读写,当前数据记录可自由移动
ADOPENSTATIC(=3) 可读写,当前数据记录可自由移动,可看到新增记录
B:
ADLOCKREADONLY(=1) 缺省锁定类型,记录集是只读的,不能修改记录
ADLOCKPESSIMISTIC(=2) 悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。
ADLOCKOPTIMISTIC(=3) 乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。
ADLOCKBATCHOPTIMISTIC(=4) 批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,数据在这段时间被更新。这减少了资源的使用。
为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据:
rs = Object("Set") (sqlStr,conn,1,A)
注:A=1表示读取数据;A=3表示新增、修改或删除数据。
在RecordSet组件中,常用的属性和方法有:
:RecordSet对象字段数。 rs(i).Name:第i个字段的名称,i为0至-1
rs(i):第i个字段的数据,i为0至-1 rs("字段名"):指定字段的数据。
:数据记录总数。 :是否最后一条记录。 rst:指向第一条记录。
st:指向最后一条记录。 ev:指向上一条记录。 xt:指向下一条记录。
s:将数据放入数组中。 :ADO的ResultSet或Connection的属性个数。
ties(item).Name:ADO的ResultSet或Connection的名称。
ties:ADO的ResultSet或Connection的值。
():关闭连接。
使用ADO连接数据库进行查询的时候,数据库将查询结果返回查询端,在查询端的内存里面就会有一个列表,这个列表存放的就是查询的结果。这个内存中的列表就是数据集。在你的程序里面rs就是表示这个数据集。bof表示rs当前的指针是指在了数据集的前面,比如数据集里面有编号为1,2,3,4的4条记录,但是rs指向的编号是-1,这样就会符合了bof的情况。同理,当rs的指针指向5,而第五条记录并不存在,这样就会产生了eof的情况。 如果同时产生了bof和aof的情况,就是说rs的指针既在上界之外也在下届之外,这样只有一种情况,就是rs所代表的数据集是空的,这样rs的指针无论是指到什么地方都是同时具有bof和eof的属性。 你的情况估计是sql语句查询出来的值是空的,因此数据集也是空的,在读取rs数据集里面的值的时候就会报这个错误。 使用 if and then 这个判断可以判别rs里面是否有没有数据集,如果符合这个条件,说明数据集是空的,在程序中就要绕开对rs里字段的访问


发布评论