【问题标题】:AdoDB connection vs. OracleInProc Server and RecordSetAdoDB 连接与 OracleInProc 服务器和 RecordSet
【发布时间】:2019-03-21 11:19:26
【问题描述】:

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

根据我在 ADODB cnn.Open "Pubs", "MyUserName", "MyPassword" 和 OraSession 中阅读的内容,您输入了 openDatabase(database_name, database_version, database_displayname, database_size)

连接有何不同?

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

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

谢谢! 玛姬

【问题讨论】:

  • 你读过docs吗?
  • 不,我没看到!这有帮助!如何提取行? .fields 只是第一行。也仍然没有真正了解它们之间的区别。

标签: sql excel vba oracle


【解决方案1】:

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

ActiveX Data Objects (ADO)

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

OracleInProcServer

  • 特定 API:专为 Oracle(专有软件)而非其他数据库定制和量身定制的解决方案,因此可能热衷于 Oracle 特定方法;
  • 似乎是一个能够处理数据库、动态集和字段对象的数据库 API;
  • COM 或 .DLL 对象不限于 VBA,而是任何可以创建 COM 接口的语言,如初始化所示:CreateObject("OracleInProcServer.XOraSession");
  • Docs show dynasets 可以与 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 的简单任务,上述任何操作都可以。

【讨论】:

  • 谢谢!是的,我能够用任何一种方法做我需要的事情。只是需要一些对我更好的指导。感谢您的信息!
  • 没问题。乐意效劳!编码愉快。
猜你喜欢
  • 1970-01-01
  • 2016-08-13
  • 2013-07-08
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 2017-04-29
相关资源
最近更新 更多