Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 Delphi-BOF或EOF为真,或者当前记录已被删除_Sql Server 2005_Delphi_Ado_Delphi 5 - Fatal编程技术网

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

Sql server 2005 Delphi-BOF或EOF为真,或者当前记录已被删除,sql-server-2005,delphi,ado,delphi-5,Sql Server 2005,Delphi,Ado,Delphi 5,当我试图在MS SQL Server 2005中的空表上进行选择时显示此错误:“BOF或EOF为True,或者当前记录已被删除”。我在Delphi5中使用了TADOConnection和TADODataSet来连接和检索数据库中的数据 Conn := TADOConnection.Create(nil); DataSet := TADODataSet.Create(nil); Conn.ConnectionString := 'Provider=SQLOLEDB.1;Passwor

当我试图在MS SQL Server 2005中的空表上进行选择时显示此错误:“BOF或EOF为True,或者当前记录已被删除”。我在Delphi5中使用了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;

有没有一种方法可以检查数据库表是否为空而不会产生这样的错误?

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


另外,我还看到,您的代码没有使用典型的组件运行时创建,也没有使用一些容器(如数据模块或表单)(通常不太好)来可视化处理组件。有时还可以通过adoConnection.execute运行简单查询。如果不使用可视化组件,ADO的记录集对象的处理与Delphi的AdoDataset几乎相同。

此错误最初发生在对MDAC_TYP(从内存更新为2.6)的更新中。据一位老人说 “这是SQL Server提供程序中的错误。设置
CursorLocation=clUseClient
以消除错误。”

有一个ADOExpress补丁可从获得,但链接不起作用。Embarcadero现在在这里主持:(感谢Jeroen的官方链接!)


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

在此处下载Delphi 5的ADO更新:

确保您还安装了定期更新:

有更多的更新(Corba,最初的ADO安装)和语言(法语,德语),但这些应该可以让你继续

以前也有一个,但它不在ftpd服务器上


--杰伦

因为我花了一整天的时间在这上面,下面是我最后所做的总结

用ADO Express安装Delphi 5 Pro

  • 卸载Delphi 5,同时删除安装目录
  • 安装Delphi 5 Pro(我只有德文Delphi Pro版本)
  • 安装Delphi 5 Pro更新(我使用了德语更新)
  • 安装Delphi5 ADO Express
  • 安装Delphi 5 ADO Express更新包1
  • 安装Delphi 5 ADO Express更新包2
  • 下载链接(再次感谢Jeroen Wiert Pluimers):

    Delphi 5 Pro更新:

    ADOExpress更新包1和2:

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


    如果您不使用ADO的Recordset对象来处理非可视代码,请使用
    AdoDataSet.DisableControls
    来大幅提高性能。编辑后可在Embarcadero的ftp站点上添加官方版本的链接谢谢,我想知道您是如何获得这些链接的,我的谷歌技能不好,我得到了它,ftpc.borland.com现在被ftpd.embarcadero.com取代,但所有文件和文件夹都是sameI get“此更新要求已安装ADOExpress更新包1。”。我试图将给定的下载链接修改为“d5adoupdate1.exe”,但在服务器上找不到该文件。我在哪里可以买到?可能是这样的。我从未跟踪过国际上的最新情况。它们应该在ftpd服务器上,但是因为它不允许目录浏览,所以我首先要说:谢谢!我找到了德语更新,还找到了第一个ADO Express更新!服务器区分大小写!一旦我有时间,我会张贴确切的链接。我卸载了Delphi5。重新安装。然后是delhpi专业德语更新。然后是ADO express,然后是ADO更新包1,然后是ADO更新包2。这花了我一整天的时间,我大概输入了30次许可证密钥。再次感谢!