ADO(ActiveX Data Objects)是一種面向對象的數據訪問技術,它提供了一系列的接口和方法,可以讓開發人員在應用程序中更加容易地對關系型數據庫進行訪問和操作。
本文介紹如何使用ADO鏈接Oracle數據庫,下面舉個例子:
Dim conn As ADODB.Connection Set conn = New ADODB.Connection conn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xxx)));User Id=xxx;Password=xxx;" conn.Open
上面的代碼中,我們使用OraOLEDB.Oracle提供的Oracle鏈接PROVIDER,其中Data Source是DB連接信息,User Id是鏈接數據庫的用戶名,Password是連接密碼。如果沒有其他的關鍵字設定,就會使用默認值鏈接數據庫。
另外,在鏈接Oracle數據庫的時候,需要一些準備工作,比如需要在Windows注冊表中注冊一些項來連接Oracle數據庫,例如:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSDTC\MTxOCI] "OracleXaLib"="oraclient11.dll" "OracleSqlLib"="orasql11.dll"
以上注冊表信息表明了系統使用Oracle數據庫時需要的OCI文件信息。
成功連接數據庫后,接下來可以進行一些操作。I、子查詢的例子:
Dim rs As ADODB.Recordset Set rs = Server.CreateObject("ADODB.Recordset") rs.Open "SELECT * FROM tableA WHERE id IN (SELECT id FROM tableB)", conn Do While Not rs.EOF Response.Write rs.Fields("id") & "
" rs.MoveNext Loop
以上代碼聯結了tableA和tableB兩個表,可以在tableA表中找到與tableB表中相同id值的記錄。
II、批量操作的例子:
Dim sql As String Dim oCount As Integer For i = 1 To 100 sql = "INSERT INTO test_table(name, age) VALUES ('testName" & i & "', 20)" conn.Execute sql oCount = oCount + 1 Next Response.Write oCount & " rows were affected"
環視的循環向test_table表中插入多行記錄。
III、超時設置的例子:
Dim conn As ADODB.Connection Set conn = New ADODB.Connection On Error Resume Next conn.CommandTimeout = 10 conn.Open "Provider=OraOLEDB.Oracle;Data Source=xxx;User Id=xxx;Password=xxx;" If Err.Number >0 Then Response.Write "database connection failure, please check your server" Err.Clear Set conn = Nothing Response.End End If On Error GoTo 0
以上代碼設置CommandTimeout為10秒,如果在10秒內沒有連接成功就會報出錯誤信息。
綜上所述,ADO鏈接Oracle數據庫的方法是比較簡單的,只要明確鏈接需要的 PROVIDER、Data Source、用戶名、密碼等參數信息,在代碼中加入相應的設置即可。常見的查詢、批量操作和超時設置等,也都可以根據需要在代碼中實現。