📄 oracle实例-4.htm
字号:
<body bgcolor="#000000">
<FONT color="#009900"
class=title>使用OLE对象访问Oracle数据库</FONT><font color="#009900"><BR>
</font><font color="#FFFFFF"> <FONT class=content> <BR>
OLE即对象联接和嵌入技术,使用这一技术,我们在VB中不用任何控件就可轻松访问 Oracle</A>数据库的内容。在安装了Oracle</A>的Oracle</A>
Object for OLE后,就可以使用Oracle</A>提供的OLE对象方便地访问数据库的内容了。 <BR>
<BR>
运行下面示例程序的前提是你必须安装了Oracle</A>的客户端或Personal Oracle</A>,并且在安装时选择了Oracle</A> Object
for OLE选项,否则你将会得到“无法建立对象”的错误信息。 <BR>
<BR>
首先,我们要建立与Oracle</A>数据库的联接,这里我们使用到两个对象OraSession对象和OraDatabase对象。OraSession对象用于管理OraDatabase对象,使用OraSession对象的OpenDatabase方法可以建立OraDatabase对象,同时建立与Oracle</A>数据库的联接以访问数据库的内容。下面的例子演示了如何使用OraSession对象和OraDatabase对象建立与Oracle</A>数据库的联接:
<BR>
<BR>
</FONT></font><FONT class=content>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6>Private Sub Command_Click()
<P> Dim OraSession As Object</P>
<P> Dim OraDatabase As Object</P>
<P> Dim Ls_username As String, Ls_password As String, Ls_server As String</P>
<P> Ls_server = ""</P>
<P> '联接本地Oracle</A>数据库</P>
<P> Ls_username = "system"</P>
<P> '用户名为 system</P>
<P> Ls_password = "manager"</P>
<P> '密码为 manager</P>
<P> '建立 OraSession 对象</P>
<P> Set OraSession = CreateObject("Oracle</A>InProcServer.XOraSession")</P>
<P> '错误处理</P>
<P> On Error GoTo Connect_Err:</P>
<P> '建立OraDatabase 对象以联接到Oracle</A>数据库</P>
<P> Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username
+ "/" + Ls_password, 0&&)</P>
<P> MsgBox "数据库联接成功!", vbOKOnly + vbInformation, "提示信息"</P>
<P> On Error GoTo 0</P>
<P> Exit Sub</P>
<P> Connect_err:</P>
<P> If InStr(OraSession.LastServerErrText, "ORA-01017") Then</P>
<P> MsgBox "无效的用户名和密码,数据库联接不成功!", vbOKOnly + vbCritical, "提示信息"</P>
<P> Else</P>
<P> MsgBox "数据库联接不成功!请查看下面的出错信息:"+Chr(13)+OraSession.LastServerErrText,
vbOKOnly + vbCritical, "提示信息"</P>
<P> End If</P>
<P> End Sub</P></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
建立了数据库联接后我们就可以运行相应的SQL命令对数据库的内容进行相应的操作了。对于非查询SQL命令(非SELECT命令),可以使用OraDatabase对象的ExecuteSQL方法执行,而对数据库的查询则可使用OraDatabase对象的CreateDynaset方法建立OraDynaset对象来执行查询,然后建立OraFields对象对查询结果进行检索。下面我们分别举例演示如何新建一个用户然后查询并列出DBA_USERS视图中USERNAME字段的内容,程序如下:
<BR>
<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6> <P>Private Sub Command_Click()</P>
<P> Dim OraSession As Object</P>
<P> Dim OraDatabase As Object</P>
<P> Dim OraDynaset As Object</P>
<P> Dim OraFields As Object</P>
<P> Dim Ls_username As String, Ls_password As String, Ls_server As String</P>
<P> Dim Ls_mess As String</P>
<P> Dim Li_I As Integer</P>
<P> Ls_server = ""</P>
<P> '联接本地Oracle</A>数据库</P>
<P> Ls_username = "system"</P>
<P> '用户名为 system</P>
<P> Ls_password = "manager"</P>
<P> '密码为 manager</P>
<P> Set OraSession = CreateObject("Oracle</A>InProcServer.XOraSession")</P>
<P> On Error GoTo Connect_Err:</P>
<P> Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username
+ "/" + Ls_password, 0&&)</P>
<P> '执行SQL命令出错后跳转到Sql_err</P>
<P> On Error GoTo Sql_err:</P>
<P> Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM
DBA_USERS", 0&&)</P>
<P> If OraDynaset.RecordCount > 0 Then</P>
<P> '建立OraFields对象对查询的内容进行检索</P>
<P> Set OraFields = OraDynaset.Fields</P>
<P> Ls_mess = “用户列表:” + Chr(13)</P>
<P> Ls_mess = Ls_mess + OraFields(“USERNAME”).Value</P>
<P> for Li_I = 1 to OraDynaset.RecordCount - 1</P>
<P> OraDynaset. MoveNext</P>
<P> Ls_mess = Ls_mess + Chr(13) + OraFields(“USERNAME”).Value</P>
<P> Next Li_I</P>
<P> MsgBox Ls_mess , vbOKOnly + vbInformation, "查询结果"</P>
<P> Else</P>
<P> MsgBox "未查询到相应信息!", vbOKOnly + vbInformation, "提示信息"</P>
<P> End If</P>
<P> '创建新用户TEST,密码为TEST</P>
<P> OraDatabase.ExecuteSQL ("CREATE USER TEST IDENTIFIED BY TEST")</P>
<P> MsgBox "用户创建成功!", vbOKOnly + vbInformation, "提示信息"</P>
<P> Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM
DBA_USERS", 0&&)</P>
<P> If OraDynaset.RecordCount > 0 Then</P>
<P> '建立OraFields对象对查询的内容进行检索</P>
<P> Set OraFields = OraDynaset.Fields</P>
<P> Ls_mess = “用户列表:” + Chr(13)</P>
<P> Ls_mess = Ls_mess + OraFields(“USERNAME”).Value</P>
<P> for Li_I = 1 to OraDynaset.RecordCount - 1</P>
<P> OraDynaset. MoveNext</P>
<P> Ls_mess = Ls_mess + Chr(13) + OraFields(“USERNAME”).Value</P>
<P> Next Li_I</P>
<P> MsgBox Ls_mess , vbOKOnly + vbInformation, "用户建立后查询结果"</P>
<P> Else</P>
<P> MsgBox "未查询到相应信息!", vbOKOnly + vbInformation, "提示信息"</P>
<P> End If</P>
<P> Exit Sub</P>
<P> Connect_err:</P>
<P> If InStr(OraSession.LastServerErrText, "ORA-01017") Then</P>
<P> MsgBox "无效的用户名和密码,数据库联接不成功!", vbOKOnly + vbCritical, "提示信息"</P>
<P> Else</P>
<P> MsgBox "数据库联接不成功!请查看下面的出错信息:" + Chr(13) + OraSession.LastServerErrText,
vbOKOnly + vbCritical, "提示信息"</P>
<P> End If</P>
<P> Exit Sub</P>
<P> Sql_err:</P>
<P> If OraDatabase.LastServerErr <> 0 Then</P>
<P> MsgBox "数据库操作出错!请查看下面的出错信息:" + Chr(13) + OraDatabase.LastServerErrText,
vbOKOnly + vbCritical, "提示信息"</P>
<P> End If</P>
<P> End Sub</P></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
以上只是简要讲述了在VB中使用Oracle</A>的OLE对象联接并访问数据库的方法,当然Oracle</A>所提供的OLE对象并不仅仅局限于上面提到的,而功能也远不止于此,有兴趣的读者可以查看Oracle</A>的随机帮助信息,用OLE对象构造出功能强大的应用程序。
<BR>
<BR>
上述程序在Visual Basic 5.0下开发,数据库使用Personal Oracle</A> 8.0.4或 Oracle</A> 8.1.6 for
NT并均调试通过。</font></FONT>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -