当我试图从Delphi 2009 DBX应用程序中更新Firebird 2.1数据库中的BLOB字段时,我正在厌倦错误消息“ SQLDA结构中的不正确值”。

但是,当我尝试执行以下sql时,我会收到错误消息:“更新mytable set field1 =:data where id =:id”

相关的Delphi代码是:

MyQuery.ParamByName('id').AsInteger := id;
MyQuery.ParamByName('data').LoadFromFile(filename, ftBlob);
MyQuery.ExecSQL();

我应该在哪里看?这已经在较早的Delphi版本中使用。

有帮助吗?

解决方案

仔细检查您的驾驶员 - 是 对于火鸟 或者您只使用 间的 驱动程序?众所周知,火鸟团队在2.1中更改了Blobs的SQLDA结构,因此,无法再使用Interbase驱动程序。

您在这里有一些选择:

  1. (推荐,恕我直言)升级到2010年Delphi-除了DBX Firebird驱动程序外,您还会有更多的东西可以玩(请参阅 这里 更多)
  2. 购买在2009年Delphi工作的Firebird的第三方驾驶员
  3. “降级”您的火鸟(当然,将其用作最后的手段)
  4. 更改您的连接库。是的,这可能意味着代码重写。

其他提示

也许您需要使用免费的DBX驱动器作为火鸟

http://sites.google.com/site/dbxfirebird/

这是Delphi的InterBase驱动程序用于显示的一种隐窝错误。

当您的SQL语句中有不同数量的参数以及查询组件中定义的参数时,我已经看到了这个问题。

想到的第一件事是确保客户端dll(gds32.dll或fb32.dll或fbclient.dll,名称取决于您使用的firebird版本)与您使用的服务器版本完全匹配。

- 杰罗恩

fwiw,我在需要的情况下执行没有绑定变量的语句,在需要时,我在Perl程序中遇到了这个错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top