本文歡迎非商業用途的轉載,但需要注明出自“編程入門網”及相應的網址鏈接。
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數據庫內每個表的名稱和類型。
查看全套“vb神童教程(續)”