我的需求

我使用Delphi/C++ Builder XE2。

我至少需要访问以下 DBMS :

  • 火鸟
  • DB2/400
  • SQL Server
  • SAP HANA(新的内存数据库,可用接口(interface):JDBC,ODBC,ODBO,SQLDBC)

  • 我需要在数据感知的可视控件中显示和编辑数据。 数据可以驻留在这些DBMS的任何上,我将在外部文本文件上配置连接属性和SQL语句。

    因此,我正在寻找一组用于数据库访问的组件,它支持此类DBMS并具有性能良好,类似于旧的Paradox表。

    我的猜测
  • 使用ODBC性能将比使用 native 驱动程序差。如果为真,我该如何克服这个问题?
  • 即使通过ODBC,HANA内存数据库的性能也将非常出色(我现在无法对其进行测试)。

  • 我到目前为止发现的
  • BDE(Borland数据库引擎)(TDatabaseTTable ...)

    不推荐使用。
  • DBX(Embarcadero dbExpress)(TSQLConnectionTSQLTable ...)

    替换BDE单向数据集(光标仅向前移动;不将数据缓存在内存中,这样的数据集无法显示在DBGrid中;要使用dbExpress构建用户界面,您将需要使用另外两个组件:TDataSetProviderTClientDataSet)

    使用 native 驱动程序(HANA则不使用)或ODBC。
  • FireDAC(Embarcadero消防数据访问组件)(TADConnectionTADTable ...)

    这是AnyDAC的延续;使用 native 驱动程序(HANA则不使用)或ODBC或dbExpress。
  • UniDAC(Devart通用数据访问组件)

    不免费;使用 native 驱动程序(HANA则不使用)或ODBC或“DB Client”。
  • DA(用于Delphi的RemObjects Data Abstract)

    不是免费的。
  • ZDBC(Zeos数据库连接接口(interface))(TZConnectionTZQuery ...)

    开源;从JDBC到Object Pascal的端口开始;不提供与数据感知可视控件的绑定(bind)。
  • dbGo(Embarcadero dbGo)(TADOConnectionTADOTable ...)

    实现ADO(因此基于ODBC的OLE DB)。有许多怪癖,例如在查询中重复使用相同名称的参数。
  • 合资BDE (TJvQueryTJvBDESQLScript ...)

    相应标准库的增强。
  • 合资企业数据访问(TJvADODatasetTJvADOQuery ...)

    相应标准库的增强。

  • (随时增强此列表)

    所以我的选择是:
  • dbExpress或FireDAC:将来Embarcadero会去哪里?
  • dbGo:ADO是一个不错的选择吗?似乎它依赖ODBC,那么性能呢?
  • 是UniDAC或Data Abstract之类的商业产品:是否有必要?会更好吗?
  • 最佳答案

    如果您使用的是XE2,则建议使用dbExpress。

  • 它支持ODBC(但不支持SAP HANA)
  • 单向数据集可与ClientDataSet一起使用进行缓存。实际上,ClientDataSets可用于缓存任何数据集组件。

  • 如果您使用的是XE3或更高版本,则建议使用FireDAC。
  • Embarcadero购买了AnyDAC,并将其重命名为FireDAC。
  • 它包含在Enterprise SKU及更高版本中。许可的XE3用户可以免费下载。
  • 我相信这将是他们 future 的数据访问策略。参见this recent blog post

  • 我知道FireDAC可以与XE2一起使用,但是我不确定是否有任何问题。

    10-06 13:00
    查看更多