正 文

在Windows中使用Oracle objects for OLE


www.7dspace.com  更新日期:2005-11-7 3:00:35  七度空间


Oracle objects for OLE(OO4O)是一组软件层,其设计目的是使与微软 COM 自动化和 ActiveX 兼容的语言直接访问 Oracle 数据库,这些语言包括 Visual Basic、Visual Basic for Application (VBA)、IIS Active Server Pages(ASP)、Windows 脚本宿主和 Visual C++。这些层是直接在 Oracle Call Interface(OCI)上编写的,绕过了标准的 ODBC、OLE DB 和ADO 层。虽然使用它创建的应用程序在使用其它数据库的时候会不兼容,但是它却能够直接地地访问 Oracle 数据库,而且能够更广地访问 Oracle 数据库。

开发人员可以使用 OO4O In-Process 自动化服务器来连接 Oracle 数据库服务器,还可以通过 COM 自动化对象执行 SQL 或 PL/SQL 过程。另外还有一种使用In-Process 服务器的方法,那就是从其接口“OracleInProcServer.XOraSession”为一个会话创建一个 COM 对象并访问子对象,如下面Visual Basic 的例子所示:

Set objSession = CreateObject("OracleInProcServer.XOraSession")
Set objDatabase = objSession.OpenDatabase("","scott/tiger",0)

使用一个数据库对象可以从数据库查询记录,或者直接执行 DLL 或 DML 语句。例如,下面是一段 VBA 脚本,它可以在 Microsoft Excel 中运行并取出 EMP 表中所有的数据然后添加到工作表的表格中:

Sub GetEmployees()
    ' Use OO4O
    Set objSession = CreateObject("OracleInProcServer.XOraSession")
    Set objDatabase = objSession.OpenDatabase("", "scott/tiger", 0)

    Sql = "select * from emp"

    Set oraDynaSet = objDatabase.DBCreateDynaset(Sql, 0)

    If oraDynaSet.RecordCount > 0 Then
        oraDynaSet.MoveFirst
        For x = 0 To oraDynaSet.Fields.Count - 1
            Cells(1, x + 1) = oraDynaSet.Fields(x).Name
            Cells(1, x + 1).Format = Bold
        Next

        For y = 0 To oraDynaSet.RecordCount - 1
            For x = 0 To oraDynaSet.Fields.Count - 1
                Cells(y + 2, x + 1) = oraDynaSet.Fields(x).Value
            Next
            oraDynaSet.MoveNext
        Next
    End If

    Set objSession = Nothing
    Set objDatabase = Nothing
End Sub

虽然可能通过 Data/External 数据源函数从一个外部数据源将数据填充到一个 Excel 电子表,但是这个宏提供了更加直接的控制,允许你准确地指定数据怎样读到电子表中;而且由于宏在访问 Oracle 数据库的时候不经过额外的层,所以其速度也比较快。它还提供附加的功能,包括存储和提取大二进制对象数据(比如说图像)的能力。

OO4O套件包括一个ActiveX 控件Oracle Data Control,它可以绑定到自定义控件,比如说那些在 Visual Basic 中使用的根据用户接口迭代的自动跟踪数据的控件。

OO4O 还包括一个 OLE C++ 类库,该类库为 Visual C++ 开发人员提供一个类似的访问机制,可以被绑定到基础类上。

本文作者:Scott Stephens已经在Oracle工作了13年有余,他曾经在技术支持、电子商务、市场和软件开发等部门工作。


上一篇:Oracle中的IEEE754数据类型
下一篇:在Oracle9i Release 2中使用PL/SQL的集合增强
作者:  来源: ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐