odbc连接oracle数据库问题,急救!

moxili 2005-05-18 10:31:22
Micorsoft ODBC for oracle 与安装Oracle客户端后生成的Oracle In OraHome有什么区别啊?
Micorsoft ODBC for oracle来连接应该怎样设置呢 高手救急
...全文
374 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangjiaxin_1 2005-05-30
  • 打赏
  • 举报
回复
还是用ado连吧
odbc实在不爽,还要配置
moxili 2005-05-30
  • 打赏
  • 举报
回复
谢谢
mndsoft 2005-05-18
  • 打赏
  • 举报
回复
忘了,更多的代码请访问:http://www.mndsoft.com
mndsoft 2005-05-18
  • 打赏
  • 举报
回复
Option Explicit


Public Enum RSMethod
VIEW_RECORD = 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
'Define ORACLE database connection strin
' g
strConnectionString = "Driver={Microsoft ODBC Driver For Oracle};ConnectString=" & strDBService & ";UID=" & strUserID & ";PWD=" & strPassword & ";"
ElseIf strDatabaseType = "MSACCESS" Then
'Define Microsoft Access database connec
' tion string
strConnectionString = "DBQ=" & strDBService
strConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; " & strConnectionString
End If



With objDB
.Mode = adModeReadWrite ' connection mode ???
.ConnectionTimeout = 10 'Indicates how Long To wait While establishing a connection before terminating the attempt and generating an error.
.CommandTimeout = 5 ' seconds given To execute any command
.CursorLocation = adUseClient ' use the appropriate cursor ???
.Open strConnectionString 'open the database connection

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
' close the recordset first if it's open
' ...
' otherwise an error will occured
'(open a recordset which is already open
' ed...)


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
'======================================
'End Of Module
'======================================
'=======================================
' ==========
'======================================
'Sample of subroutines...
'======================================


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 = "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"
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 = "你的值"
.Update
End With
objRecSet.Close
objConn.Close
Set objRecSet = Nothing
Set objConn = Nothing
End Sub

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧