2

当我尝试在 MS SQL Server 2005 中的空表上进行选择时出现此错误:“BOF 或 EOF 为 True,或者当前记录已被删除”。我在 Delphi 5 中使用了 TADOConnection 和 TADODataSet 来连接和检索数据库中的数据。

  Conn := TADOConnection.Create(nil);
  DataSet := TADODataSet.Create(nil);

  Conn.ConnectionString := 'Provider=SQLOLEDB.1;Password=sa;' +
                           'Persist Security Info=True;' +
                           'User ID=user;Initial Catalog=mydb;' +
                           'Data Source=MYPC\SQLEXPRESS;' +
                           'Use Procedure for Prepare=1;' +
                           'Auto Translate=True;Packet Size=4096;' +
                           'Workstation ID=MYPC;' +
                           'Use Encryption for Data=False;' +
                           'Tag with column collation when possible=False';
  Conn.LoginPrompt := False;
  Conn.Open;

  DataSet.Connection := Conn;
  DataSet.CommandText := 'SELECT * FROM MYTABLE';
  DataSet.Open;

  DataSet.Free;
  Conn.Free;

有没有办法检查数据库表是否为空而不会产生此类错误?

4

4 回答 4

7

此错误最初是在更新 MDAC_TYP(从内存到 2.6)时发生的。根据旧的Borland 公告 “这是 SQL Server 提供程序中的错误。设置 CursorLocation = clUseClient为消除错误。”

Borland提供了一个 ADOExpress 补丁,但该链接不起作用。Embarcadero 现在在这里托管它:ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe(感谢 Jeroen 的官方链接!)

我建议您下载并安装 Embarcadero 网站上列出的所有补丁,前提是您可以找到它们。

于 2010-08-04T05:16:36.220 回答
6

在此处下载 Delphi 5 的 ADO 更新:ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe

确保您还安装了常规更新:

还有更多更新(Corba,原始 ADO 安装)和语言(法语、德语),但这些应该会让您继续前进。

以前也有一个http://info.borland.com/devsupport/delphi/download_files/zlibupdate.zip,但它不在 ftpd 服务器上。

——杰伦

于 2010-08-04T10:22:51.643 回答
2

这是很久以前的事了,但我记得 Delphi 5 中的这个问题通过 Delphi 更新解决了。早期版本的 ADO 组件存在严重问题

PS 另外,我看到您的代码不使用典型的运行时创建组件,并且不使用诸如数据模块或表单(通常不好)之类的容器来进行组件的可视化工作。有时也有用通过 adoConnection.execute 运行简单查询。如果不使用可视化组件,ADO 的 Recordset 对象的处理与 Delphi 的 AdoDataset 大致相同。

于 2010-08-04T05:13:14.963 回答
1

由于我花了一整天的时间,这里是我最后所做的总结。

使用 ADO Express 安装 Delphi 5 Pro

  1. 卸载Delphi 5,同时删除安装目录
  2. 安装 Delphi 5 Pro(我只有德文 Delphi Pro 版本)
  3. 安装 Delphi 5 Pro 更新(我使用的是德语更新)
  4. 安装 Delphi 5 ADO Express
  5. 安装 Delphi 5 ADO Express 更新包 1
  6. 安装 Delphi 5 ADO Express 更新包 2

以及下载链接(再次感谢 Jeroen Wiert Pluimers):

Delphi 5 Pro 更新:

ftp://ftpd.embarcadero.com/pub/delphi/devsupport/updates/delphi5/D5ProUpdate.exe ftp://ftpd.embarcadero.com/pub/delphi/devsupport/updates/delphi5/german/d5proupdate.exe

ADOExpress 更新包 1 和 2:

ftp://ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/D5ADOUpgrade.exe ftp://ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe

并为将来参考一些截图来构建下载链接(区分大小写):

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2013-05-29T06:59:06.770 回答