错误消息“ SQLDA结构内的不正确值”,使用Firebird和Delphi 2009
-
13-09-2019 - |
题
当我试图从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驱动程序。
您在这里有一些选择:
- (推荐,恕我直言)升级到2010年Delphi-除了DBX Firebird驱动程序外,您还会有更多的东西可以玩(请参阅 这里 更多)
- 购买在2009年Delphi工作的Firebird的第三方驾驶员
- “降级”您的火鸟(当然,将其用作最后的手段)
- 更改您的连接库。是的,这可能意味着代码重写。
其他提示
也许您需要使用免费的DBX驱动器作为火鸟
这是Delphi的InterBase驱动程序用于显示的一种隐窝错误。
当您的SQL语句中有不同数量的参数以及查询组件中定义的参数时,我已经看到了这个问题。
想到的第一件事是确保客户端dll(gds32.dll或fb32.dll或fbclient.dll,名称取决于您使用的firebird版本)与您使用的服务器版本完全匹配。
- 杰罗恩
fwiw,我在需要的情况下执行没有绑定变量的语句,在需要时,我在Perl程序中遇到了这个错误。
不隶属于 StackOverflow