sql - 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&)
谢谢!劣质煤
解决方案
总的来说,两者都是将数据库连接到编程环境的工具。根据在线文档,OracleInProcServer 是一个 OLE 自动化对象。因此,安装后它可以作为 VBA 参考。ADODB(ADO 的一部分)是一个通用的数据库 API,另一个是特定的 Oracle API。请参阅下面的更多要点。请注意:我不熟悉 OracleInProcServer,但下面是从上面的来源收集的。
- 可通用的 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 操作系统;
- 在业内广为人知,在许多教程、书籍和在线搜索中都提供了经久不衰的问题和解决方案。
- 特定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 的简单任务,上述任何操作都可以。
推荐阅读
- symfony - 入队控制器动作过程
- insert - 使用 SPARQL 查询将个人添加到 owl 文件
- r - 用于线性回归 lm(y~x) 的 R 循环并将模型输出保存为数据集
- python - 如果满足某些条件,则在组内移动日期到上一年的同一日期
- opencv - 如何在jupyter Notebook的Opencv中解决“无法解压不可迭代的NoneType对象”的TypeError?
- vba - 从共享 Outlook 邮箱中具有特定主题的邮件中自动下载附件
- java - Twilio sms 阿拉伯字母显示为问号
- react-native - 热重载正在工作,但刷新 (⌘+R) 会导致黑屏/白屏
- angular - 在 Angular 8 中发送带有附件的邮件
- php - 水平展开索引数组数据