Connection对象介绍
Connection对象支持许多属性,可以利用这些属性来操作当前的连接状态或者获取一些基本的Connection对象的信息.有一些属性是只读的,而另一些属性是可读写的.
1.Attributes属性
Attributes属性设置或返回一个整型值,它用来指示对象的一项或多项特性.对于Connection对象,Attributes属性为读/写,并且其值可能为以下任意一个或多个XactAttributeEnum值的和(默认为零).
▲AdXactCommitRetaining:执行保留的提交,即通过自动调用CommitTrans启动新事务。并非所有提供者都支持该常量。
▲AdXactAbortRetaining:执行保留的中上,即通过自动调用RollbackTrans启动新事务。并非所有提供者都支持该常量。
2.CommandTimeout属性
CommandTimeout属性设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。默许值为30,指示在终止尝试和产生错误之前执行命令期间需要等待的时间。使用Connection对象或Command上的CommandTimeout属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消Execute方法调用。如果在CommandTimeout属性中设置的时间间隔内没有完成命令执行,将产生错误,然后ADO将取消该命令。如果将该属性设置为零,ADO将无限期等待直到命令执行完毕。
3.ConnectionString属性
ConnectionString属性设置或返回字符串值,这个字符串值包含用来建立到数据源的连接的信息.使用ConnectionString属性,通过传递包含一系列由分号分隔的argument=value语句的详细连接字符串可指定数据源。ADO支持ConnectionString属性的四个参数,任何其他参数将直接传递到提供者而不经过ADO处理。
▲Provider参数:指定用来连接的提供者名称。
▲File Name参数:指定包含预先设置连接信息的特定提供者的文件名称。
▲Remote Provider参数:指定打开客户端连接时使用的提供者名称。
▲Remote Server参数:指定打开客户端连接时使用的服务器的路径名称。
例:使用Connection对象的ConnectionString属性的示例代码
Public Sub ConnectionString_Example()
Dim connection1 As ADODB.Connection
Dim connection2 As ADODB.Connection
Dim connection3 As ADODB.connection
Dim connection4 As ADODB.Connection
'不使用数据源名(DSN)打开连接
Set connection1=New ADODB.Connection
connection1.ConnectionString="driver={SQL Server};"&_
"server=Myserver;uid=sa;pwd=password;database=pubs"
connection1.ConnectionTimeout=30
connection1.Open
'使用DSN和ODBC标记打开连接。
Set connection2=New ADODB.Connection
connection2.ConnectionString="DSN=Pubs;UID=sa;PWD=password;"
connection2.Open
'使用DSN和OLE DB标记打开连接。
Set connection3=New ADODB.Connection
connection3.ConnectionString="Data Source=Pubs;User ID=sa;Password=password;"
connection3.Open
'使用DSN和单个参数而非连接字符串打开连接。
Set connection4=New ADODB.Connection
connection4.Open "Pubs","sa","pwd"
End Sub
注意:如果没有复选“引用”对话框中的Data Access Object,程序会出错。在上面的程序段中,先定义了4个Connection对象的变量。这4个变量分别对应于4种不同的连接方式。语句Set connection1=New ADODB.Connection是创建一个新的Connection对象,然后再调用Connection对象的Open方法来打开数据库连接。
4.ConnectionTimeout属性
ConnectionTimeout属性设置或返回指示等待连接打开的时间的长整型值(单位为秒)。其默认值为15,指示在终止尝试和产生错误前建立连接期间所等待的时间。如果由于网络拥塞或服务器负载过重导致的延迟使得必须放弃连接尝试时,请使用Connection对象的ConnectionTimeout属性。如果打开连接前所经过的时间超过ConnectionTimeout属性上设置的时间,将产生错误并且ADO将取消该尝试。如果将该属性设置为零,ADO将无限等待直到连接打开。
5.DefaultDatabase属性
DefaultDatabase属性可设置或返回指定Connection对象上默认数据库的名称。
例:使用Connection对象的DefaultDababase属性的示例代码。
Public Sub DefaultDatabase_Example()
Dim connection1 As ADODB.Connection
Set connection1=New ADODB.Connection
connection1.ConnectionString="driver={SQL Server};"&_
"server=Myserver;uid=sa;pwd=password"
cnn1.Open
cnn1.DefaultDatabase="pubs"
End Sub
6.IsolationLevel属性
IsolationLevel属性指出Connection对象如何处理对象。
7.Mode属性
Mode属性设置或返回以下某个ConnectModeEnum的值,指示用于更改在Connection中的数据的可用权限。
▲AdModeUnknown:默认值。表明权限尚未设置或无法确定。
▲AdModeRead:表明权限为只读。
▲AdModeWrite:表明权限为只写。
▲AdModeReadWrite:表明权限为读/写。
▲AdModeShareDenyRead:防止其他用户使用读权限打开连接。
▲AdModeShareDenyWrite:防止其他用户使用写权限打开连接。
▲AdModeShareExclusive:防止其他用户打开连接。
▲AdModeShareDenyNone:防止其他用户使用任何权限打开连接。
8.Provider属性
Provider属性指出当前数据提供者的名字,或者是使用Open()方法时没有指定名字的情况下所使用的提供者名。但是,调用Open方法时如果在多处指定提供者可能会产生无法预料的后果。如果没有指定提供者,该属性将默认为MSDASQL(Microsoft OLE DB Provider for ODBC)。
例:使用Connection对象的Provider属性的示例代码。
Public Sub Provider_Example()
Dim connection1 As ADODB.Connection
Set connection1=New ADODB.Connection
connection1.Provider="Microsoft.Jet.OLEDB.3.51"
connection1.Open"C:\samples\northwind.mdb","admin",""
End Sub
9.State属性
State属性对所有可应用对象都可用,它用来说明其对象状态是打开或关闭的。可以随时使用State属性来确定指定对象的当前状态。该属性是只读的,并返回下列常量之一的长整型值。
▲AdStateClosed:默认值,指示对象是关闭的。
▲AdStateOpen:指示对象是打开的。
▲AdStateConnecting:指示Recordset对象正在连接。
▲AdStateExecuting:指示Recordset对象正在执行命令。
▲AdStateFetching:指示Recordset对象的行正在被读取。
例:使用Connection对象的State属性的示例代码。
Public Sub State_Example()
Dim connection1 As ADODB.Connection
Dim statestring AS String
Set connection1=New ADODB.Connection
connection1.ConnectionString="DSN=Pubs;UID=sa;PWD=password;"
connection1.Open
Select Case connection1.State
case adStateClosed
statestring="adStateClosed"
case adStateOpen
statestring="adStateOpen"
End Select
'显示连接的状态。
MsgBox "connection1.State:",,statestring
End Sub
Connection对象的方法
Connection对象的方法用来管理事务、执行命令、打开和关闭连接。需注意的是,ADO对象所支持的方法是独立于当前所使用的数据源的。例如一个OLE DB数据源不必支持OLE DB规范的全部功能。
1.BeginTrans方法
BeginTrans方法开始一个连接到数据源的新事务,即启动一个新的事务。与之相应的还有CommitTrans和RollbackTrans方法。CommitTrans保存所有的更改并结束当前事务,它也可以用来启动一个新的事务。RollbackTrans取消当前事务中所做的任何更改并结束事务,同CommitTrans类似,它也可以用来启动一个新的事务。它们的语法为:
Object.BeginTrans
Object.CommitTrans
Object.RollbackTrans
需注意,并非所有提供者都支持事务。需验证提供者定义的属性Transaction DDL是否出现在Connection对象的Properties集合中,如果在则表示提供者支持事务。如果提供者不支持事务,调用其中的某个方法将返回错误。一旦调用了BeginTrans方法,在调用CommitTrans或RollbackTrans结束事务之前提供者将不再立即提交所做的任何更改。
例:使用Connection对象的BeginTrans、CommitTrans和RollbackTrans方法的示例代码。
Public Sub BegiTrans_Example()
Dim cnn1 As ADODB.Connection
Dim rstTitles As ADODB.Recordset
Dim strCnn As String
Dim strTitle As String
Dim strMessage As String
'打开连接。
strCnn="Provider=sqloledb;Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=;"
Set cnn1=New ADODB.Connection
cnn1.Open strCnn
'打开Titles表
Set rstTitles=New ADODB.Recordset
rstTitles.CursorType=adOpenDynamic
rstTitles.LockType=adLockPessimistic
rstTitles.Open "titles",cnn1,,,adCmdTable
rstTitles.MoveFirst
cnn1.BeginTrans
'在记录集中循环并询问是否想要更改指定标题的类型.
Do Until rstTitles.EOF
If Trim(rstTitles!Type)="psychology" Then
strTitle=rstTitles!Title
strMessage="Title:"&strTitle&vbCr&"Change type to self help?"
'更改指定雇员的标题
If MsgBox(strMessage,vbYesNo)=vbYes Then
rsttitles!Type="self_help"
rstTitles.Update
End If
Enf If
rstTitles.MoveNext
Loop
'询问用户是否想提交以上所做的全部更改
If MsgBox("Save all changes?",vbYesNo)=vbYes Then
cnn1.CommitTrans
Else
cnn1.RollbackTrans
End If
'打印记录集中的当前数据。
rstTitiles.Requery
rstTitles.MoveFirst
Do While Not rstTitles.EOF
Debug.Print rstTitles!Title&"-"&rstTitles!Type
rstTitles.MoveNext
Loop
'恢复原始数据,因为这是一个演示
rstTitles.MoveFirst
Do Until rstTitles.EOF
If Trim(rstTitles!Type)="self_help" Then
rstTitles!Type="paychology"
rstTitles.Update
End If
rstTitles.MoveNext
Loop
rstTitles.Close
cnn1.Close
End Sub 此例更改了数据库中Titles表中所有心理学书籍的类型。在BeginTrans方法启动事务将所有对Titles表的更改隔离后,CommitTrans方法将保存更改。可使用Rollback方法撤消用Update方法保存的更改。
2.Open方法
Open方法打开一个数据源的连接,语法如下:
connection.Open ConnectionString,UserID,Password,OpenOptions
参数说明:
▲ConnectionString:这是一个可选的字符串,它包含了连接信息。
▲UserID:可选的字符串,它包含了建立连接时所使用的用户名称。
▲Password:可选的字符串,它包含了建立连接时所使用的密码。
▲OpenOptions:可选的字符串,它包含了建立连接时所使用的连接方式。
3.Close方法
Close方法关闭一个到数据源的连接。在关闭的同时,此连接所使用的任何资源都会被释放。它的语法如下:
Object.Close
例:使用Connection对象的Open和Close方法的示例代码。
Public Sub OpenClose_Example()
Dim conn As ADODB.Connection
'Open the Connection object,omit the password
conn.Open "Data Source=MyDatabase","john"
'Use the Connection object here...
'Close the Connection
conn.Close
End Sub 4.Execute方法
Execute方法用来执行查询或由数据源支持的其他命令,并且返回一个RecordSet对象,语法如下:
Set recordset=connection.Execute(CommandText,Recordsaffected,Options)
参数说明:
▲CommandText:这是一个包含要执行的SQL语句、表名、存储过程或特定提供者的文本的字符串。
▲RecordsAffected:这是一个可选的长整型变量,提供者向其返回操作所影响的记录数目。
▲Options:可选的长整型变量,指示提供者应如何为CommandText参数赋值。
例:使用Connection对象的Execute方法的示例代码。
Public Sub Execute_Example()
Dim cnn As ADODB.Connection
Dim MyRecordset As ADODB.Recordset
Dim Mysql As String
Set cnn=New ADODB.Connection
Set MyRecordset=New ADODB.Recordset
cnn.Open "Data Source=MyDatabase","john"
Mysql="Select * From Books"
MyRecordset=cnn.Execute Mysql
cnn.Close
MyRecordset.Close
End Sub 5.OpenSchema方法
OpenSchema方法从提供者中获取数据为纲要信息,语法如下:
Set recordset=connection.OpenSchema(QueryType,Criterisa,SchemaID)
参数说明:
▲QueryType:QueryType参数指出所要运行的纲要查询类型。
▲Criteria:可选参数,指出每个QueryType选项的查询限制条件数组。
▲SchemaID:OLE DB规范没有定义提供者纲要查询的GUID。如果QueryType设置为adSchemaProviderSpecific,则需要该参数,否则不使用它。
例:使用Connection对象的OpenSchema方法的示例代码。
Public Sub OpenSchemaX()
Dim cnn1 As ADODB.Recordset
Dim rstSchema As ADODB.Recordset
Dim strCnn As String
Set cnn1=New ADODB.Connection
strCnn="Provider=sqloedb;Data Source=srv;Initial catalog=pubs;User ID=sa;Password=:"
cnn1.Open strCnn
Set rstSchema=cnn1.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
Debug.Print "Table name:"&rstSchema!TABLE_NAME&vbCr&"Table type:"&_
rstSchema!TABLE_TYPE&VbCr
rstSchema.MoveNext
Loop
rstSchema.Close
cnn1.Close
End Sub
上例使用了OpenSchema方法显示Pubs数据库内每个表的名称和类型。