sql-server-2005 - Delphi - BOF 或 EOF 为真,或者当前记录已被删除

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

当我尝试在 MS SQL Server 2005 中的空表上进行选择时出现此错误:“BOF 或 EOF 为真,或者当前记录已被删除”。我在 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;

有没有一种方法可以检查数据库表是否为空而不引发此类错误?

最佳答案

此错误最初是在更新 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 网站上列出的所有补丁,前提是您可以找到它们。

关于sql-server-2005 - Delphi - BOF 或 EOF 为真,或者当前记录已被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3402674/

相关文章:

Delphi XE 断开或终止 datasnap 客户端 session

c++ - 使用c++ ADO连接sql server 2017失败但返回null错误信息

database - Excel 可以将自己用作数据库吗?

sql-server - SQL Server 代理作业超时

delphi - 如何使用 THTTPReqResp 添加/覆盖 HTTP header ?

string - 在 Delphi 中的字符串内使用引号

delphi - ServerController 的 ComInitialization 属性

sql-server-2005 - 如何在 Sql Server 2005 中创建自定义字母数字主键

sql-server - 在 SQL Server 中恢复已删除的记录

sql-server-2005 - 将 LINQPad 连接到远程 SQL Server