ExcelVBA連接Oracle


VBA連接Oracle需要添加引用:

之后,連接字符串為:Provider = MSDAORA.1;Password=******;User ID=XXXXXXX;Data Source=DBID;Persist Security Info=True

然后使用ado的標准封裝使用即可,1、使用ADO.CONNECTION,打開連接,2、使用ADO.RECODESET查詢DB,使用connection.Excute執行更新刪除等操作。

具體代碼如下:

Public Sub ConOra()Dim sht As Worksheet
    Set sht = ActiveSheet
    On Error GoTo ErrMsg:
    '連接串
    Dim ConnDB As ADODB.Connection
    Set ConnDB = New ADODB.Connection
    
    Dim ConnStr As String
    ' 結果集
    Dim DBRst As ADODB.Recordset
    Set DBRst = New ADODB.Recordset
    'SQL文
    Dim SQLRst As String
    
    Dim OraOpen As Boolean
    OraOpen = False
    'Oracle數據庫的相關配置
    ConnStr = getConnStr()
    ' ConnDB.CursorLocation = adUseServer
    ConnDB.Open ConnStr
    ConnDB.Execute ("select * from dual")
    OraOpen = True '成功執行后,數據庫即被打開
    'MsgBox "Connect to the oracle database Successful!", vbInformation, "Connect Successful"
    'DBRst.ActiveConnection = ConnDB
    'DBRst.CursorLocation = adUseServer
    'DBRst.LockType = adLockBatchOptimistic
    
    SQLRst = "Select * From " & getTableName() & " where rownum = 1 "
    
    'DBRst.Open SQLRst, ConnDB, adOpenStatic, adLockBatchOptimistic
    DBRst.Open SQLRst, ConnDB

查詢之后,對於RecordSet 的使用:

1、獲取列名:

    For i = 1 To DBRst.Fields.Count
        sht.Cells(2, i) = DBRst.Fields(i - 1).Name
    Next

2、獲取值:

    Do Until DBRst.EOF
        For i = 1 To DBRst.Fields.Count
            sht.Cells(4, i) = DBRst.Fields(i - 1).Value
        Next i
        DBRst.MoveNext
    Loop

3、判斷RecordSet是否為空:

    If DBRst.BOF And DBRst.EOF Then
        MsgBox "數據庫中未查詢出任何數據,請將做成的數據寫入第4行!", vbInformation, "提示"
    End If

4、記得關閉連接喲。

5、如果按照以上方法,仍無無法連接DB,並提示:連接無法打開,這是因為Office的安裝目錄中包含(86)導致的,重新按照OFFICE到其他非program文件夾下即可解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM