查询包含一个varbinary(blob)字段的表时出现SQL错误消息
我们正在使用Delphi XE3以及TSQLDataSet和TClientDataset将表从SQL server 2012读入内存 该表包含各种字段,其中一个是blob“varbinary(max)”,我们在其中存储文本文件中的内容 我的问题是,当我们打开ClientDataset时,会收到一条错误消息,说“连接正忙于处理另一个命令的结果”。 commandtext是一个简单的“select*fromtablename” 只有当表中有多个项目时才会发生这种情况。只有当blob字段(NULL)中有数据时,才会发生这种情况 如果我们在表中添加第二个varbinary字段,一切都会正常工作。第二个字段不必包含任何数据 这快把我逼疯了,请帮帮我查询包含一个varbinary(blob)字段的表时出现SQL错误消息,sql,delphi,blob,varbinary,Sql,Delphi,Blob,Varbinary,我们正在使用Delphi XE3以及TSQLDataSet和TClientDataset将表从SQL server 2012读入内存 该表包含各种字段,其中一个是blob“varbinary(max)”,我们在其中存储文本文件中的内容 我的问题是,当我们打开ClientDataset时,会收到一条错误消息,说“连接正忙于处理另一个命令的结果”。 commandtext是一个简单的“select*fromtablename” 只有当表中有多个项目时才会发生这种情况。只有当blob字段(NULL)中
编辑:作为一种解决方法,我们只是在表中添加了一个“虚拟”varbinary字段。由于这种奇怪的行为,我们得出结论,这一定是TClientDataset组件中的错误。尝试在旧版本的delphi(XE2 SP3)中执行相同的操作,结果相同 poFetchBlobOnDemand是ProviderFlags的一部分吗?如果直接打开SQLDataSet会发生什么?如果使用TSQLQuery会发生什么情况?poFetchBlobOnDemand在提供程序组件上未选中。组件上的所有设置都是您在将它们添加到delphi表单时获得的默认设置。如果我在SQLDataset上打开,我将不会得到错误,但随后我将无法访问ClientDataset上的数据,因为我收到错误消息,无法访问“关闭的数据集”。我没有尝试过TSQLQuery,因为这不是我们的选择。我们需要在网格中显示ClientDataset中的数据,并且需要能够编辑它的数据。此外,blob字段不必是ClientDataset上的字段之一,否则会发生错误。我添加tables主键作为ClientDataset上的唯一字段就足够了。