使用OLE对象访问Oracle数据库

来源: 作者: 2006-08-02 出处:PCDOG.COM

关键字:

  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("OracleInProcServer.XOraSession")

     '错误处理

     On Error GoTo Connect_Err:

    '建立OraDatabase 对象以联接到Oracle数据库

     Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username + "/" + Ls_password, 0&&)

     MsgBox "数据库联接成功!", vbOKOnly + vbInformation, "提示信息"

     On Error GoTo 0

     Exit Sub

    Connect_err:

     If InStr(OraSession.LastServerErrText, "ORA-01017") Then

    MsgBox "无效的用户名和密码,数据库联接不成功!", vbOKOnly + vbCritical, "提示信息"

     Else

    MsgBox "数据库联接不成功!请查看下面的出错信息:"+Chr(13)+OraSession.LastServerErrText, 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("OracleInProcServer.XOraSession")

     On Error GoTo Connect_Err:

     Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username + "/" + Ls_password, 0&&)

     '执行SQL命令出错后跳转到Sql_err

     On Error GoTo Sql_err:

     Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM DBA_USERS", 0&&)

     If OraDynaset.RecordCount > 0 Then

    '建立OraFields对象对查询的内容进行检索

    Set OraFields = OraDynaset.Fields

     Ls_mess = “用户列表:” + Chr(13)

     Ls_mess = Ls_mess + OraFields(“USERNAME”).Value

     for Li_I = 1 to OraDynaset.RecordCount - 1

     OraDynaset. MoveNext

     Ls_mess = Ls_mess + Chr(13) + OraFields(“USERNAME”).Value

     Next Li_I

     MsgBox Ls_mess , vbOKOnly + vbInformation, "查询结果"

     Else

     MsgBox "未查询到相应信息!", vbOKOnly + vbInformation, "提示信息"

     End If

     '创建新用户TEST,密码为TEST

     OraDatabase.ExecuteSQL ("CREATE USER TEST IDENTIFIED BY TEST")

     MsgBox "用户创建成功!", vbOKOnly + vbInformation, "提示信息"

     Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM DBA_USERS", 0&&)

     If OraDynaset.RecordCount > 0 Then

    '建立OraFields对象对查询的内容进行检索

    Set OraFields = OraDynaset.Fields

     Ls_mess = “用户列表:” + Chr(13)

     Ls_mess = Ls_mess + OraFields(“USERNAME”).Value

     for Li_I = 1 to OraDynaset.RecordCount - 1

     OraDynaset. MoveNext

     Ls_mess = Ls_mess + Chr(13) + OraFields(“USERNAME”).Value

     Next Li_I

     MsgBox Ls_mess , vbOKOnly + vbInformation, "用户建立后查询结果"

     Else

     MsgBox "未查询到相应信息!", vbOKOnly + vbInformation, "提示信息"

     End If

    Exit Sub

    Connect_err:

     If InStr(OraSession.LastServerErrText, "ORA-01017") Then

    MsgBox "无效的用户名和密码,数据库联接不成功!", vbOKOnly + vbCritical, "提示信息"

     Else

    MsgBox "数据库联接不成功!请查看下面的出错信息:" + Chr(13) + OraSession.LastServerErrText, vbOKOnly + vbCritical, "提示信息"

     End If

     Exit Sub

    Sql_err:

     If OraDatabase.LastServerErr <> 0 Then

     MsgBox "数据库操作出错!请查看下面的出错信息:" + Chr(13) + OraDatabase.LastServerErrText, vbOKOnly + vbCritical, "提示信息"

     End If

    End Sub

  以上只是简要讲述了在VB中使用Oracle的OLE对象联接并访问数据库的方法,当然Oracle所提供的OLE对象并不仅仅局限于上面提到的,而功能也远不止于此,有兴趣的读者可以查看Oracle的随机帮助信息,用OLE对象构造出功能强大的应用程序。

  上述程序在Visual Basic 5.0下开发,数据库使用Personal Oracle 8.0.4或Oracle 8.1.6 for NT并均调试通过。

使用OLE对象访问Oracle数据库相关推荐

  1. 【方法】如何限定IP访问Oracle数据库

    [方法]如何限定IP访问Oracle数据库 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...

  2. ado.net能访问oracle,利用ADO.NET访问Oracle数据库的实现

    1.前言随着互联网的发展,人们对Web网页的要求越来越多的趋向于动态交互性,而这很大程度上依赖于Web数据库.因为动态交互需要强大的信息系统支持,信息数据以数据库形式表示更容易更新和管理.通过网页如何 ...

  3. 3种方式限制ip访问Oracle数据库

    墨墨导读:本文来自墨天轮读者投稿,分享了3种限制某个ip或某个ip段访问Oracle数据库的方式,希望对大家有帮助. 一.概述 本文将给大家介绍如何限制某个ip或某个ip段才能访问Oracle数据库 ...

  4. ado.net访问ORACLE数据库点滴

    不知是不是受到微软影响,.net程序员似乎与生俱来与MS SQLSERVER密不可分,我所认识的.net开发者都用微软的MS.我也忘记了当时为何不加任何考虑的就投入了SQL SERVER的怀抱,陪伴着 ...

  5. 访问Oracle数据库的四款工具软件介绍

    本文由Markdwon语法编辑器编辑完成. 1. Oracle数据库介绍: 关于Oracle数据库,以及它和MySQL, SQL Server等其他数据库的介绍和区别,可以查看以下来自知乎的链接. h ...

  6. 防火墙起不来 oracle,windows防火墙造成不能访问oracle数据库

    我也遇到了这个问题,将完整的解决方法转贴如下,仅供参考! 在防火墙上开放Oracle服务端口 要使Oracle客户端能正常连接到设置有防火墙的安装在windows上的Oracle服务器,单开放一个15 ...

  7. vc cdatabase oracle,VC程序访问Oracle数据库的存储过程时的问题解决方案

    在用VC开发的应用程序中,访问Oracle数据库的存储过程中出现了问题如下:在脚本里面调用存储过程的时候,如果用exec mysp 就报告"无效字符":如果用 {call mysp ...

  8. Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程

    Web服务器的配置: 1.安装Oracle 客户端 参考 Oracle 9i & PLSQL 全简体中文版数据库安装过程(图解),在选择安装的时候仅安装客户端即可 2.为安装客户端的服务器配置 ...

  9. 服务器访问oracle数据库,Oracle数据库的访问——通过不同服务器名对数据库的访问...

    服务器端完成配置后,现在客户端可以通过不同的网络服务名配置来访问这个数据库,下面是一个配置示范: EYGLE= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (P ...

最新文章

  1. 收发机中数字中频的设计
  2. spring中ClassPathXmlApplication和FileSystemXmlApplicationContext使用区别
  3. NET插件系统之四——提升系统搜索插件和启动速度的思考
  4. 细述hbase协处理器
  5. 工程打包是什么意思_承包工程是什么意思
  6. 安装windows时loading files结束就重启_Boot Camp安装windows 10
  7. vue.js中mock本地json数据
  8. win10打开计算机黑屏怎么办,教你如何解决win10电脑开机黑屏的问题
  9. SPA (单页应用程序)
  10. 用.net实现按透明度生成水印文件
  11. Internet Explorer 8的新特性和自定义部署
  12. pycharm主题方案
  13. 服务器返回状态码说明,关于服务器返回的十四种常见HTTP状态码详解
  14. 我的第一个“大工程”,欢迎来到m78星云
  15. Unity协程(Coroutine)之yield和迭代原理分析
  16. BUUCTF Reverse reverse3 WriteUp
  17. 面试准备之java8的新特性
  18. 解决 Windows USB 鼠标键盘断连掉线的问题 和 安全删除硬件并弹出媒体图标 没有弹出移动硬盘的选项
  19. pgsql 日期转换
  20. python 打开是黑的-python黑色

热门文章

  1. 前端面试题:怎么实现网页优化?
  2. 超几何分布应用-质检抽样
  3. 电脑键盘equals在哪个位置_常用标点符号和电脑键盘符号英语表示
  4. Centos安装/卸载Docker步骤
  5. Python数据分析高薪实战第十天 EDA实战-全球新冠肺炎确诊病例趋势分析
  6. 实验四、嵌入式Linux串行通信实验
  7. 软件测试——测一只笔
  8. 关于java的mongoDB插入去重以及高并发问题
  9. 在c 语言中 引用数组元素时,【单选题】在 C 语言中,引用数组元素时,其数组下标的数据类型不允许是 A. 整型常量 B. 整型表达式 C. 整形符号常量 D. 整型变量...
  10. tplink怎么进去_TP-LINK 无线路由器怎么设置?