Delphi - BOF或EOF为True,或者当前记录已被删除

时间:2010-08-04 04:50:52

标签: sql-server-2005 delphi ado delphi-5

当我尝试在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 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分: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服务器上。

- 的Jeroen

答案 2 :(得分:2)

很长一段时间agom但我记得Delphi 5中的这个问题通过Delphi更新解决了。早期版本的ADO组件存在严重问题

P.S。此外,我看到您的代码不使用典型的运行时创建组件,也不使用某些容器,如数据模块或表单(通常不太好)用于组件的可视化工作。有时也可以通过adoConnection.execute运行简单查询。如果不使用可视组件,则处理ADO的Recordset对象与Delphi的AdoDataset非常相似。

答案 3 :(得分: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 Update Pack 1
  6. 安装Delphi 5 ADO Express更新包2
  7. 下载链接(非常感谢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

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

    enter image description here

    enter image description here

    enter image description here

    enter image description here

    enter image description here