OLE即对象联接和嵌入技术使用这一技术我们在VB中不用任何控件就可轻松访问Oracle数据库的内容在安装了Oracle的Oracle Object for OLE后就可以使用Oracle提供的OLE对象方便地访问数据库的内容了
运行下面示例程序的前提是你必须安装了Oracle的客户端或Personal Oracle并且在安装时选择了Oracle Object for OLE选项否则你将会得到无法建立对象的错误信息
首先我们要建立与Oracle数据库的联接这里我们使用到两个对象OraSession对象和OraDatabase对象OraSession对象用于管理OraDatabase对象使用OraSession对象的OpenDatabase方法可以建立OraDatabase对象同时建立与Oracle数据库的联接以访问数据库的内容下面的例子演示了如何使用OraSession对象和OraDatabase对象建立与Oracle数据库的联接
Private Sub Command_Click()
Dim OraSession As Object
Dim OraDatabase As Object
Dim Ls_username As String Ls_password As String Ls_server As String
Ls_server =
联接本地Oracle数据库
Ls_username = system
用户名为 system
Ls_password = manager
密码为 manager
建立 OraSession 对象
Set OraSession = CreateObject(OracleInProcServerXOraSession)
错误处理
On Error GoTo Connect_Err:
建立OraDatabase 对象以联接到Oracle数据库
Set OraDatabase = OraSessionDbOpenDatabase(Ls_server Ls_username + / + Ls_password &&)
MsgBox 数据库联接成功! vbOKOnly + vbInformation 提示信息
On Error GoTo
Exit Sub
Connect_err:
If InStr(OraSessionLastServerErrText ORA) Then
MsgBox 无效的用户名和密码数据库联接不成功! vbOKOnly + vbCritical 提示信息
Else
MsgBox 数据库联接不成功!请查看下面的出错信息+Chr()+OraSessionLastServerErrText vbOKOnly + vbCritical 提示信息
End If
End Sub
建立了数据库联接后我们就可以运行相应的SQL命令对数据库的内容进行相应的操作了对于非查询SQL命令(非SELECT命令)可以使用OraDatabase对象的ExecuteSQL方法执行而对数据库的查询则可使用OraDatabase对象的CreateDynaset方法建立OraDynaset对象来执行查询然后建立OraFields对象对查询结果进行检索下面我们分别举例演示如何新建一个用户然后查询并列出DBA_USERS视图中USERNAME字段的内容程序如下
Private Sub Command_Click()
Dim OraSession As Object
Dim OraDatabase As Object
Dim OraDynaset As Object
Dim OraFields As Object
Dim Ls_username As String Ls_password As String Ls_server As String
Dim Ls_mess As String
Dim Li_I As Integer
Ls_server =
联接本地Oracle数据库
Ls_username = system
用户名为 system
Ls_password = manager
密码为 manager
Set OraSession = CreateObject(OracleInProcServerXOraSession)
On Error GoTo Connect_Err:
Set OraDatabase = OraSessionDbOpenDatabase(Ls_server Ls_username + / + Ls_password &&)
执行SQL命令出错后跳转到Sql_err
On Error GoTo Sql_err:
Set OraDynaset = OraDatabaseDbCreateDynaset(SELECT USERNAME FROM DBA_USERS &&)
If OraDynasetRecordCount > Then
建立OraFields对象对查询的内容进行检索
Set OraFields = OraDynasetFields
Ls_mess = 用户列表 + Chr()
Ls_mess = Ls_mess + OraFields(USERNAME)Value
for Li_I = to OraDynasetRecordCount
OraDynaset MoveNext
Ls_mess = Ls_mess + Chr() + OraFields(USERNAME)Value
Next Li_I
MsgBox Ls_mess vbOKOnly + vbInformation 查询结果
Else
MsgBox 未查询到相应信息! vbOKOnly + vbInformation 提示信息
End If
创建新用户TEST密码为TEST
OraDatabaseExecuteSQL (CREATE USER TEST IDENTIFIED BY TEST)
MsgBox 用户创建成功! vbOKOnly + vbInformation 提示信息
Set OraDynaset = OraDatabaseDbCreateDynaset(SELECT USERNAME FROM DBA_USERS &&)
If OraDynasetRecordCount > Then
建立OraFields对象对查询的内容进行检索
Set OraFields = OraDynasetFields
Ls_mess = 用户列表 + Chr()
Ls_mess = Ls_mess + OraFields(USERNAME)Value
for Li_I = to OraDynasetRecordCount
OraDynaset MoveNext
Ls_mess = Ls_mess + Chr() + OraFields(USERNAME)Value
Next Li_I
MsgBox Ls_mess vbOKOnly + vbInformation 用户建立后查询结果
Else
MsgBox 未查询到相应信息! vbOKOnly + vbInformation 提示信息
End If
Exit Sub
Connect_err:
If InStr(OraSessionLastServerErrText ORA) Then
MsgBox 无效的用户名和密码数据库联接不成功! vbOKOnly + vbCritical 提示信息
Else
MsgBox 数据库联接不成功!请查看下面的出错信息 + Chr() + OraSessionLastServerErrText vbOKOnly + vbCritical 提示信息
End If
Exit Sub
Sql_err:
If OraDatabaseLastServerErr <> Then
MsgBox 数据库操作出错!请查看下面的出错信息 + Chr() + OraDatabaseLastServerErrText vbOKOnly + vbCritical 提示信息
End If
End Sub
以上只是简要讲述了在VB中使用Oracle的OLE对象联接并访问数据库的方法当然Oracle所提供的OLE对象并不仅仅局限于上面提到的而功能也远不止于此有兴趣的读者可以查看Oracle的随机帮助信息用OLE对象构造出功能强大的应用程序
上述程序在Visual Basic 下开发数据库使用Personal Oracle 或Oracle for NT并均调试通过