使用Firebird和Delphi 2009时出现“SQLDA结构中的值不正确”的错误消息

3

我在尝试从Delphi 2009的DBX应用程序更新Firebird 2.1数据库中的blob字段时,遇到了“SQLDA结构中的错误值”错误消息。

但是当我尝试执行以下SQL的TSQLQuery时,就会收到错误消息:“update MYTABLE set FIELD1= :data where id = :id”

相关的Delphi代码如下:

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

我应该在哪里寻找?这在早期的Delphi版本中是有效的。

5个回答

4

这是Delphi的Interbase驱动程序用来显示的加密错误。

当您的SQL语句中的参数数量与查询组件中定义的参数数量不同时,我曾看到过这个问题。


3
请检查一下您的驱动程序——它是针对 Firebird 的,还是您只是为此使用了 Interbase 驱动程序?众所周知,Firebird 团队在 2.1 版本中更改了 Blobs 中的 SQLDA 结构,因此 Interbase 驱动程序不能再使用了。
您有几个选择:
1.(推荐)升级到 Delphi 2010——除了 DBX Firebird 驱动程序外,您还将得到更多功能可供使用(有关详细信息,请参见这里
2.购买第三方适用于 Delphi 2009 的 Firebird 驱动程序。
3.“降级”您的 Firebird(当然,这应该是最后的选择)。
4.更改您的连接库。是的,这可能意味着需要重写代码。

3

1
首先要确保的是,客户端dll(gds32.dll或fb32.dll或fbclient.dll,名称取决于您正在使用的Firebird版本)与您正在使用的服务器版本完全匹配。
-- jeroen

0

顺便说一下,我在执行一个语句时,在 Perl 程序中遇到了这个错误,因为它需要绑定变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接