首页 > 解决方案 > AdoDB 连接与 OracleInProc 服务器和 RecordSet

问题描述

我想知道是否有人可以ADODB.Connection通过“OracleInProcServer.XOraSession”解释和创建 Oracle 会话之间的区别。在某些情况下,一种比另一种更好吗?

从我读到的ADODB cnn.Open "Pubs", "MyUserName", "MyPassword"和你输入的 OraSession 中openDatabase(database_name, database_version, database_displayname, database_size)

连接有何不同?

此外,使用 ADODB 连接,您可以打开记录集并使用 ars.Open和 a保存rs.GetRows。有没有办法保存查询的值,然后通过 OraSession 连接显示在 Excel 中?

Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
verses
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.DbOpenDatabase("", "", 0&)

谢谢!劣质煤

标签: sqlexcelvbaoracle

解决方案


总的来说,两者都是将数据库连接到编程环境的工具。根据在线文档,OracleInProcServer 是一个 OLE 自动化对象。因此,安装后它可以作为 VBA 参考。ADODB(ADO 的一部分)是一个通用的数据库 API,另一个是特定的 Oracle API。请参阅下面的更多要点。请注意:我不熟悉 OracleInProcServer,但下面是从上面的来源收集的。

ActiveX 数据对象 (ADO)

  • 可通用的 API:能够交换连接字符串并在 OLEDB 提供程序和 ODBC 驱动程序(如 Oracle、MySQL、SQL Server、PostgresSQL 等)之间保持相同的一致代码库;参见MS Access 和 SQLite 交换的示例
  • 用于在应用层和后端数据库之间工作的全功能数据库 API,包括调用存储过程、操作查询、处理记录集等;
  • COM 或 .DLL 对象不限于 VBA,而是任何可以使 COM 接口(即。Java、PHP、Python、R)初始化为的语言CreateObject("ADODB.Connection")
  • 由于它集成了一种编程语言,它可以连接到 Excel 对象库(即工作簿、工作表、范围),甚至是 Access/Word/Outlook/PowerPoint 应用程序;
  • 微软是供应商和维护者;API 可免费下载。但是,通常不需要额外安装,因为 ADO 附带 MS Office 软件或 Windows 操作系统;
  • 在业内广为人知,在许多教程、书籍和在线搜索中都提供了经久不衰的问题和解决方案。

OracleInProcServer

  • 特定API:专门为Oracle(专有软件)定制和量身定制的解决方案,没有其他数据库,因此可能热衷于Oracle特定的方法;
  • 似乎是一个能够处理数据库、动态集和字段对象的数据库 API;
  • COM 或 .DLL 对象不限于 VBA,而是任何可以创建 COM 接口的语言,如初始化所示CreateObject("OracleInProcServer.XOraSession")
  • 文档显示动态集可以与 Excel 工作簿一起使用,循环记录和字段(非常类似于 ADO)以显示数据:

    'Display Data 
    For Rownum = 2 To myDynaset.RecordCount + 1 
      For Colnum = 0 To fldcount - 1 
        ActiveSheet.Cells(Rownum, Colnum + 1) = flds(Colnum).Value 
      Next 
      myDynaset.MoveNext 
    Next 
    
  • Oracle 是供应商和维护者,需要安装(可能付费);可能安装了 Oracle 客户端和其他组件;另外,用户可能能够就该产品向某人寻求帮助(查看服务协议/条款);

  • 可能是一个小用户群,可能没有解决复杂的问题或没有广为人知或可用的解决方案。

哪一个更好?这最终归结为您的偏好或项目需求。对于连接到数据库、调用查询和输出到 Excel 的简单任务,上述任何操作都可以。


推荐阅读