AdoDB连接与OracleInProc Server和RecordSet

时间:2018-10-16 20:35:09

标签: sql excel vba oracle

我想知道是否有人可以解释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&)

谢谢! 玛姬

1 个答案:

答案 0 :(得分:0)

总体而言,两者都是将数据库连接到编程环境的工具。根据{{​​3}},OracleInProcServer是OLE自动化对象。因此,安装后即可作为VBA参考。 ADODB(ADO的一部分)是一个通用的数据库API,另一个是特定的Oracle API。请参阅下面的其他要点。请注意:我对OracleInProcServer不熟悉,但是下面是来自上述来源的信息。

online docs

  • 可通用化的API:能够在OLEDB提供程序和ODBC驱动程序(例如Oracle,MySQL,SQL Server,PostgresSQL等)之间交换连接字符串并维护相同的一致代码库;参见MS Access和SQLite互换的ActiveX Data Objects (ADO)
  • 用于在应用程序层和后端数据库之间工作的全功能数据库API,包括调用存储过程,操作查询,使用记录集等;
  • COM或.DLL对象不仅限于VBA,还可以使用CreateObject("ADODB.Connection")初始化的任何可以构成COM接口的语言(即Java,PHP,Python,R);
  • 由于它已集成到一种编程语言中,因此可以连接到Excel对象库(即工作簿,工作表,范围),甚至可以连接到Access / Word / Outlook / PowerPoint应用程序;
  • Microsoft是供应商和维护者; API适用于example。但是,由于ADO随MS Office软件或Windows OS一起提供,因此通常不需要其他安装;
  • 在行业中广为人知,它具有持续时间长的问题和解决方案,可在许多教程,书籍和在线搜索中找到。

free download

  • 特定的API:专门针对Oracle(专有软件)并且没有其他数据库的定制解决方案,因此可能更喜欢Oracle特定的方法;
  • 似乎是一个功能强大的数据库API,可用于数据库,动态集和字段对象;
  • COM或.DLL对象不限于VBA,而是可以通过初始化看到的可以构成COM接口的任何语言:CreateObject("OracleInProcServer.XOraSession");
  • OracleInProcServer显示动态集可以与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的简单任务,可以完成上述操作。