当前位置: 首页 > 图文教程 > 数据库 > Oracle > ADO连接Oracle Access示例及记录集处理源码

Oracle
Oracle数据库的使用技巧五则
Oracle数据库的启动和关闭方式
解决Oracle并行服务器的相关问题
SuSE Linux10上安装Oracle数据库方法
正确进行Oracle数据库性能完全保护
最影响Oracle系统性能的初始化参数
掌握MIS系统实例中Oracle的安全策略
深入了解Oracle数据库后台进程的功能
如何用Oracle创建实例的参数需求
Oracle非法数据库对象引起的错误
掌握Oracle数据库中sequence的用法
黑客狙击Oracle系统的八大常用套路
数据从MySQL迁移到Oracle的注意事项
使用utl_smtp从Oracle中发送电子邮件
Oracle操作中常见的错误和解决方法
Oracle数据库中sequence的用法
使Oracle数据库保持优良性能
Oracle数据库中的临时表用法
Oracle10gR2中调整user commit的方法
SQL Server 2005对DBA的要求是否会更高

ADO连接Oracle Access示例及记录集处理源码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 34 ::
收藏到网摘: n/a

  本文给大家展示一个Visual Basic里,使用ADO连接Oracle、Access示例及记录集处理源码,大家可以参考一下。

Option Explicit
Public Enum RSMethod
    VIEW_RECORD [color=#0000ff]= 0
    EDIT_RECORD = 1
    EXEC_SQL = 2
    NEW_RECORD = 3
End Enum


Function dbConnection(strDatabaseType As String, strDBService As String, Optional strUserID As String, Optional strPassword As String) As ADODB.Connection
    
    Dim objDB As New ADODB.Connection
    Dim strConnectionString As String
    


    If strDatabaseType = "ORACLE" Then
        '定义 orACLE 数据库连接字符串
        strConnectionString = "Driver={Microsoft ODBC Driver For oracle};ConnectString=" & strDBService & ";UID=" & strUserID & ";PWD=" & strPassword & ";"
    ElseIf strDatabaseType = "MSACCESS" Then
        '定义 Microsoft Access 数据库连接字符串

        strConnectionString = "DBQ=" & strDBService
        strConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; " & strConnectionString
    End If
    


    With objDB
        .Mode = adModeReadWrite  ' 连接模式 ???
        .ConnectionTimeout = 10  '超时
        .CommandTimeout = 5      
        .CursorLocation = adUseClient 
        .Open strConnectionString  '打开数据库连接
        
    End With
    
    Set dbConnection = objDB
End Function


Function CreateRecordSet(ByRef dbConn As ADODB.Connection, ByRef rs As ADODB.Recordset, ByVal method As RSMethod, Optional strSQL As String, Optional TableName As String) As ADODB.Recordset
    ' 如果打开应先关闭
    '     ...

    If rs.State=1 Then
        rs.close 
    End If


    Select Case method
        Case RSMethod.NEW_RECORD
        rs.ActiveConnection = dbConn
        rs.CursorType = adOpenKeyset
        rs.LockType = adLockOptimistic
        rs.CursorLocation = adUseServer
        rs.Open TableName
        
        Case RSMethod.EDIT_RECORD
        rs.ActiveConnection = dbConn
        rs.Source = strSQL
        rs.CursorType = adOpenKeyset
        rs.LockType = adLockOptimistic
        rs.CursorLocation = adUseClient
        rs.Open
        ' Debug.Print "SQL Statement in EDIT Mod
        '     e (Createrecordset) : " & strSQL
        ' Debug.Print "Found " & rs.RecordCount 
        '     & " records"
        
        Case RSMethod.VIEW_RECORD
        
        rs.ActiveConnection = dbConn 'dbConnection 'dbConn
        rs.Source = strSQL
        rs.CursorType = adOpenForwardOnly
        rs.CursorLocation = adUseClient
        rs.Open
        ' Debug.Print "Found " & rs.RecordCount 
        '     & " records"
        rs.ActiveConnection = Nothing
        
        Case RSMethod.EXEC_SQL
        Set rs = dbConn.Execute(strSQL)
    End Select
Set CreateRecordSet = rs
End Function
'======================================
'模块结束
'======================================

'=======================================
'======================================
'调用示例...
'======================================


Sub Add_New_Record()
    Dim objRecSet As New ADODB.Recordset
    Dim objConn As New ADODB.Connection
    Dim strUserID As String
    Dim strPassword As String
    Dim strTableName As String
    Dim strDBType As String
    Dim strDBName As String
    
    strTableName = "你的表名称"
    strPassword = "密码"
    strUserID = "帐号"
    


    If strDBType = "MSACCESS" Then
        ' strDBName 是数据库名称
        strDBName = App.Path & "\YourAccessDB.mdb"
        
    ElseIf strDBType = "ORACLE" Then
        ' strDBName 是Oracle 服务器名称
        strDBName = "你的Oracle 服务器名称"
        strTableName = strUserID & "." & strTableName
        'Table name format ::> USERID.TABLENA
        '     ME
    Else
        MsgBox "Database is other than orACLE or Microsoft"
        Exit Sub
    End If
    
    Set objConn = dbConnection(strDBType, strDBName, "userid", "password")
    'send NEW_RECORD and strTableName as a p
    '     art of parameters
    Set objRecSet = CreateRecordSet(objConn, objRecSet, NEW_RECORD, , strTableName)
    
    objConn.BeginTrans


    With objRecSet
        .AddNew
        .Fields("FIELD1").Value = "your value1"
        .Fields("FIELD2").Value = "your value2"
        .Fields("FIELD3").Value = "your value3"
        .Fields("FIELD4").Value = "your value4"
        .Fields("FIELD5").Value = "your value5"
        .Update
    End With


    If objConn.Errors.Count = 0 Then
        objConn.CommitTrans
    Else
        objConn.RollbackTrans
    End If
    
    objRecSet.Close
    objConn.Close
    Set objRecSet = Nothing
    Set objConn = Nothing
End Sub


Sub View_Record_Only()
    Dim strSQL As String
    Dim strDBName As String
    Dim strDBType As String
    Dim strUserID As String
    Dim strPassword As String
    
    Dim objRecSet As New ADODB.Recordset
    Dim objConn As New ADODB.Connection
    


    If strDBType = "MSACCESS" Then
        ' strDBName is your Database Name
        strDBName = App.Path & "\YourAccessDB.mdb"
        
    ElseIf strDBType = "ORACLE" Then
        ' strDBName is your oracle Service Name
        strDBName = "YOUR_ORACLE_SERVICE_NAME"
        
    Else
        MsgBox "Database is other than orACLE or Microsoft"
        Exit Sub
    End If
    
    strPassword = "YourPassword"
    strUserID = "YourUserID"
    strSQL = "Select * from USER_TABLE"
    
    Set objConn = dbConnection(strDBType, strDBName, "userid", "password")
    'create a disconnected recordset
    Set objRecSet = CreateRecordSet(objConn, objRecSet, VIEW_RECORD, strSQL)
    objConn.Close
    Set objConn = Nothing
    'manipulate the recordset here.....
    'manipulate the recordset here.....
    'manipulate the recordset here.....
    objRecSet.Close
    Set objRecSet = Nothing
End Sub


Sub Edit_Existing_Record()
    Dim objRecSet As New ADODB.Recordset
    Dim objConn As New ADODB.Connection
    Dim strUserID As String
    Dim strPassword As String
    Dim strSQL As String
    Dim strDBType As String
    Dim strDBName As String
    
    strTableName = "YOURTABLE"
    strPassword = "YourPassword"
    strUserID = "YourUserID"
    


    If strDBType = "MSACCESS" Then
        ' strDBName is your Database Name
        strDBName = App.Path & "\YourAccessDB.mdb"
        
    ElseIf strDBType = "ORACLE" Then
        ' strDBName is your oracle Service Name
        strDBName = "YOUR_ORACLE_SERVICE_NAME"
    Else
        MsgBox "Database is other than orACLE or Microsoft"
        Exit Sub
    End If
    strSQL = "Select * from YOUR_TABLE"
    Set objConn = dbConnection(strDBType, strDBName, "userid", "password")
    'send EDIT_RECORD and strSQL as a part o
    '     f parameters
    Set objRecSet = CreateRecordSet(objConn, objRecSet, EDIT_RECORD, strSQL)
    


    With objRecSet
        .Fields("FIELD1").Value = "your value1"
        .Update
    End With
    objRecSet.Close
    objConn.Close
    Set objRecSet = Nothing
    Set objConn = Nothing
End Sub