4

我们有一个大小(大约 1MLOC)的应用程序,它是在 BDE 即将被弃用的时候开始的。现在我们只使用它来使用 ODBC 连接到 SQL Server。尽管它已被弃用,但它的运行却出人意料地好,而且它很可能会继续运行 15 年。但是,没有人知道它是否或何时停止工作。如果它停止,Embarcadero 将无能为力。所以,这是一颗定时炸弹,我们需要更换它。但是用什么?

Delphi 中的 ADO 组件看起来很有前途。有类似于 BDE 组件的表和查询组件,它们不是由可能失去兴趣的单人商店制造的第三方组件。我们也期待使用连接字符串而不是笨拙的 ODBC-Administrator。

然而,大约一年前,微软宣布不推荐使用 OLE DB,对于原生开发,我们应该使用 SQL Server Native Client ODBC 驱动程序。

所以,我的问题是,Delphi 中的 ADO 组件是否与 OLD DB 硬连线?或者,如果我们在驱动程序列表中选择“SQL Server Native Client”,我们会不会使用 OLE DB?

我希望/担心要使用 SQL Server Native Client ODBC 驱动程序,我们必须像现在一样在 ODBC-Adminstrator 中设置数据源。或者是否可以使用连接字符串与 ODBC 连接?

还有哪些 Delphi 组件可以在不使用 OLE DB 的情况下连接到 ODBC?是的,我知道 dbExpress,但看起来我们需要数年才能从 BDE 转换到它。

谢谢,陆鲨

4

3 回答 3

3

5 年前,我们有类似的迁移需求,并对其进行了大量研究和测试。从 BDE 迁移到 SDAC 的最简单途径是从 devart (http://www.devart.com/sdac/)。Devart 有一个 BDE 替换实用程序,它检查您的代码并将 BDE 组件替换为等效的 SDAC 组件。它将使您到达那里大约 90% 的位置,然后您必须手动进行一些更改才能使一切正常工作(例如,如果您使用 fetchall,则必须注释掉所有 fetchall 代码 - 但您会看到一个模式并且可以修复其余代码主要通过搜索和替换)。SDAC 组件的性能非常好,它们支持所有 sql server 调用,并且您可以通过 Internet 使用加密连接。这些组件支持与 SQL Server 的本机 SQL 或 OLEDB 连接。它们还使用缓存更新在分离模式下工作。如果您计划支持除 SQL Server 之外的其他数据库平台,另一种选择是使用 UniDac - 它就像 SDAC,但可以与 SQL Server、Oracle 和其他平台一起使用 - 非常类似于旧的 BDE,没有开销。

于 2012-10-11T15:20:53.600 回答
2

1)“本机连接”并不意味着使用 ODBC 或 OLE DB,也不意味着使用 BDE 和 DBX。本机连接意味着使用只能连接到 MS SQL 并且不使用任何与服务器无关的标准管道的特殊库。相反,BDE 和 DBX 以及 ADO 和 ODBC 是通用库,可提供与您安装插件的任何服务器的连接。

通常,本机库为您提供与服务器的更紧密集成,并使用通用库可能错过的一些功能(如 firebird/interbase 服务器中的事件)。它们还可以更快地工作,因为它们不需要将数据流和命令转码到管道公共 API 标准/从管道公共 API 标准转码。

公共接口 OTOH 可帮助您更轻松地切换服务器并更轻松地开发与服务器无关的应用程序。

2) 为什么你认为 BDE -> DBX 转换比 BDE -> ODBC 或 BDE -> ADO 或 BDE-> 什么都难?转换就是转换。ADO 也有它的限制和陷阱,比如 DBX 和任何其他库。

3) DBX 有 MS SQL 插件。DevArt 提供了他们的一套 DBX 插件,并且可能提供比现有的 Delphi DBX MS SQL 支持更好的一个。或者可能不是。

4)除此之外,很少有知名的与服务器无关的库

5)您可以在任何组件收集器站点上进行大量直接 ODBC 连接,例如http://www.torry.net/pages.php?id=570

6) 与本机 MS SQL 连接相同http://www.torry.net/pages.php?id=1513

但是,评估这些选择并做出决定需要只有您才能拥有的内部背景知识。

于 2012-10-11T12:52:24.443 回答
0

几年前我们也遇到过同样的问题。我想如果有一个完美的解决方案,那么就不会有那么多替代方案了。

无论如何,我们从 BDE + ODBC 切换到 ADO + SQLOLEDB。主要原因是它非常可靠,易于转换,不需要在客户计算机(例如 BDE)上安装任何额外的东西,并且比 delphi 附带的其他产品更快,包括 DBX(使用 DisableControls 时)。

另外作为附带说明,如果您想使用 ODBC 来配置连接,您可以使用 ODBC 管理器来配置值,但从注册表中读取它们并直接连接而不使用 ODBC。这有助于我们进行转换。

于 2012-10-11T13:40:52.520 回答