我的需求
我使用 Delphi/C++Builder XE2。
我至少需要访问这些DBMS:
- 火鸟
- DB2/400
- SQL 服务器
- SAP HANA(一个新的内存数据库,可用接口:JDBC、ODBC、ODBO、SQLDBC)
我需要在数据感知可视控件中显示和编辑数据。数据可以驻留在这些 DBMS 中的任何一个上,我将在外部文本文件上配置连接属性和 SQL 语句。
因此,我正在寻找一组支持此类 DBMS 并具有良好性能的数据库访问组件,类似于旧的 Paradox 表。
我的猜测
- 使用 ODBC 性能将比使用本机驱动程序差。如果属实,我该如何克服这个问题?
- 即使通过 ODBC,HANA 内存数据库的性能也会很棒(我现在无法测试)。
到目前为止我发现了什么
BDE (Borland 数据库引擎) (
TDatabase
,TTable
...)已弃用。
DBX (Embarcadero dbExpress ) (
TSQLConnection
,TSQLTable
...)替换 BDE,单向数据集(光标只在前面;不在内存中缓冲数据,这样的数据集不能在 DBGrid 中显示;要使用 dbExpress 构建用户界面,您需要再使用两个组件:
TDataSetProvider
和TClientDataSet
)使用本机驱动程序(HANA 没有)或 ODBC。
FireDAC(Embarcadero Fire 数据访问组件)(
TADConnection
...TADTable
)这是AnyDAC的延续;使用本机驱动程序(HANA 没有)或 ODBC 或 dbExpress。
UniDAC(Devart 通用数据访问组件)
不是免费的;使用本机驱动程序(HANA 没有)或 ODBC 或“DB 客户端”。
DA( Delphi 的RemObjects数据摘要)
不是免费的。
ZDBC (Zeos 数据库连接接口) (
TZConnection
,TZQuery
...)开源;开始作为 JDBC 到 Object Pascal 的一个端口;不提供与数据感知可视控件的绑定。
dbGo (Embarcadero dbGo) (
TADOConnection
,TADOTable
...)实现 ADO(因此通过 OLE DB 通过 ODBC)。有许多怪癖,例如在查询中重复同名参数。
Jv BDE (
TJvQuery
,TJvBDESQLScript
...)相应标准库的增强。
合资数据访问 (
TJvADODataset
,TJvADOQuery
...)相应标准库的增强。
(请随时增强此列表)
所以我的选择是:
- dbExpress 或 FireDAC:Embarcadero 未来将走向何方?
- dbGo:ADO 是一个不错的选择吗?貌似它依赖于ODBC,那么性能呢?
- 像 UniDAC 或 Data Abstract 这样的商业产品:有必要吗?会更好吗?