当我尝试在 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/