标签: bde

Delphi中的BDE与ADO

请注意下面的编辑以获取更多信息,以及可能的解决方案

我们最近修改了一个大型Delphi应用程序,以使用ADO连接和查询而不是BDE连接和查询.自那次改变以来,表现变得非常糟糕.

我已经分析了应用程序,瓶颈似乎是在实际调用TADOQuery.Open.换句话说,除了重构应用程序以减少实际使用数据库之外,从代码角度来看,我无法做很多事情来改进这一点.

有没有人有关于如何提高ADO连接的Delphi应用程序性能的建议?我已经尝试了这里给出的两个建议,几乎没有任何影响.

为了了解性能差异,我对相同的大型操作进行了基准测试:

  • 在BDE下:11秒

  • 在ADO下:73秒

  • 在该文章引用的更改之后的ADO下:72秒

我们在客户端 - 服务器环境中使用Oracle后端.本地计算机每个都保持与数据库的单独连接.

对于记录,连接字符串如下所示:

const
  c_ADOConnString = 'Provider=OraOLEDB.Oracle.1;Persist Security Info=True;' +
                    'Extended Properties="plsqlrset=1";' +
                    'Data Source=DATABASE.DOMAIN.COM;OPTION=35;' +
                    'User ID=******;Password=*******';
Run Code Online (Sandbox Code Playgroud)

回答zendar提出的问题:

我在Windows Vista和XP上使用Delphi 2007.

后端是Oracle 10g数据库.

如连接字符串所示,我们使用的是OraOLEDB驱动程序.

我的基准测试机器上的MDAC版本是6.0.

编辑:

在BDE下,我们有很多代码如下:

procedure MyBDEProc;
var
  qry: TQuery;
begin
  //fast under BDE, but slow under ADO!!
  qry := TQuery.Create(Self);
  try
    with qry do begin
      Database := g_Database;
      Sql.Clear;
      Sql.Add('SELECT');
      Sql.Add('  FIELD1');
      Sql.Add(' ,FIELD2');
      Sql.Add(' ,FIELD3');
      Sql.Add('FROM');
      Sql.Add('  TABLE1');
      Sql.Add('WHERE SOME_FIELD …
Run Code Online (Sandbox Code Playgroud)

delphi oracle performance ado bde

13
推荐指数
2
解决办法
1万
查看次数

Windows 7上的interbase和BDE

好的我知道这已经被弃用了,而且bde比Moses旧,但是我们还有一些遗留的应用程序还没有使用bde进行迁移.

有没有人成功安装bde与完全配置为Windows 7(32和64位)的interbase sql链接?

我发现了许多不同的帖子和可执行文件,但没有结论.

谢谢

interbase bde windows-7

11
推荐指数
1
解决办法
4万
查看次数

如何结合来自不同数据库的数据?

我想到了从不同的数据库中联合两个选择的必要性,即paradox(在bde中)和ms sql server.

目前bde(through TQuery)仅用于程序的这一部分(即dbgrid).现在我需要将存储在ms sql server数据库中的一些数据(我通常使用它TADOQuery)添加到同一个网格中.

虽然查询是在完全不同的表上执行的,但是列的结果集的命名和输入类似(我的意思是,如果我有这些表,比如说,在ms sql server数据库中,我可以使用一个简单的联合).

有没有办法在delphi7中统一从这些中选择的记录集,我可以将结果用作dbgrid的数据源?

sql sql-server delphi bde delphi-7

11
推荐指数
1
解决办法
1460
查看次数

Vista上的BDE初始化失败(错误$ 2501)

我有一个用Delphi 2007编写的小型datasnap服务器来访问BDE.它在Windows 2000和XP上工作正常,但在Vista上不时(实际上很常见)我收到错误消息:

尝试初始化Borland数据库引擎时发生错误(错误$ 2501)

关闭使用BDE的所有内容可以修复错误(尽管有时需要"结束处理"数据绑定服务器才能关闭它).

随着越来越多的客户为他们的"服务器"运行Vista,这变得相当烦人.有没有人有什么建议?

delphi bde windows-vista

7
推荐指数
1
解决办法
4万
查看次数

如果使用Oracle数据库,Delphi应用程序可以选择从BDE迁移出来

我们有一个连接到Oracle 8i数据库的Delphi 5应用程序.

大多数逻辑在数据库中作为存储过程选址.目前,我们使用Borland数据库引擎(BDE)通过OCI客户端9.2连接到Oracle.

这个应用程序最初是在96年使用Delphi 1编写的,然后在99年升级到Delphi 5.

计划是升级到XE客户端和Oracle 11g.

用其他东西简单地替换BDE并将努力保持在最低限度的选项是什么?

到目前为止,我已经看到:

  • AnyDAC(http://www.da-soft.com/anydac/)
  • devart ODAC(http://www.devart.com/odac/)
  • DOA(http://www.allroundautomations.com/)

我不是在考虑DBExpress,因为我不相信它会有我们需要的性能.

重要的是:

  • 易于升级,例如向导或其他一些转换DBE组件的工具,
  • 很好的表现.

我倾向于devart,因为他们确实有一个迁移工具(虽然它只做一个部分工作),他们有一个直接的TCP选项连接到数据库而无需客户端.

delphi oracle bde

7
推荐指数
1
解决办法
2848
查看次数

为什么设置表的RecNo属性不会移动到该记录?

我有一个使用BDE访问DBase表的TTable组件.表上没有索引,因此排序顺序是表中记录的物理顺序.如果我读取RecNo属性,它包含当前记录的预期编号.

我的印象是,使用这个星座(BDE + DBase),也可以将RecNo属性设置为移动到相应的记录.但显然这在我的计划中不起作用.

所以:我记错了吗?或者我需要做些什么特别的工作呢?

(请不要建议放弃BDE.我知道它的问题,我们已经远离它了.)

delphi dbase bde

6
推荐指数
1
解决办法
4957
查看次数

当网络不稳定时,如何防止数据库连接失败?

我们有一个使用 BDE 连接到 Oracle DB 的应用程序。
我使用 TQuery 进行 SQL 查询,它连接到 TDatabase,我们不是专业程序员,我们不知道幕后发生了什么。

我们的网络不稳定,存在丢包问题。

当问题发生时,我们的应用程序会与数据库服务器断开连接,或者无法完成当前查询。
处理这个问题的最佳方法是什么?

我们的网络团队目前正在努力解决根本问题,并且我们已经更改了代码以在出现故障时重新连接到数据库。我们遇到了数据库服务器上打开会话数量的问题。

有什么解决办法吗?
这对我们来说似乎是一个常见问题。

delphi oracle networking bde

5
推荐指数
1
解决办法
4051
查看次数

使用 Native Client 10 将 TDateTime 字段插入 SQL 2008 DB

我们有一个用 Delphi 2007 编写的遗留应用程序,并且仍在使用 BDE(是的,它需要切换到 ADO,但有超过 500K 行,这是一项艰巨的工作)。它使用 SQL SERVER ODBC 连接连接到 SQL Server 2008 DB。我正在尝试切换到 SQL Server Native Client 10.0,并且遇到了一个有趣的问题。当尝试将记录插入包含日期时间字段的表时,我们收到以下错误:

Project DateTimeParamTest.exe raised exception class EDBEngineError with message 'General SQL error.
[Microsoft][SQL Server Native Client 10.0]Datetime field overflow. Fractional second precision exceeds the scale specified in
the parameter binding.'.
Run Code Online (Sandbox Code Playgroud)

在进行一些研究时,我看到了有关 TParameter 对象的 NumericScale、Precision 和 Size 参数的评论。TADOQuery会自动将参数分别设置为3、23、16,插入没有问题。如果我在 TQuery 对象上将参数设置为相同,则会收到与上面相同的错误。

有谁有这方面的经验并知道简单的解决方法吗?我为任何想尝试的人创建了以下示例代码。您只需要更改连接和 SQL 代码。

日期时间参数测试_Main.dfm:

object Form10: TForm10
  Left = 0
  Top = 0
  Caption = 'Form10'
  ClientHeight = 111
  ClientWidth = …
Run Code Online (Sandbox Code Playgroud)

delphi bde delphi-2007 sql-server-2008 sql-server-native-client

5
推荐指数
1
解决办法
2964
查看次数

安装Windows 10的Delphi 5

我试图在Windows 10上安装Delphi 5,但是在配置BDE时挂起。

我在具有管理员权限的其他目录中尝试过。

我也尝试过兼容模式。

如果有人知道,我非常感谢!

此图片是错误的

delphi bde delphi-5 windows-10

5
推荐指数
2
解决办法
2万
查看次数

如何在Delphi中使用TSession BDE类?

我使用ODBC使用多个连接.在整个项目中我使用相同的连接,但创建,使用和destory TQuery对象.现在我将在线程中使用连接,并开始了解Delphi BDE为此提供TSession类.我想知道如何使用TSession进行并发操作,请尽可能提供代码示例.

delphi bde

4
推荐指数
1
解决办法
4722
查看次数