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

时间:2009-12-05 14:07:16

标签: delphi delphi-2009 firebird dbx

当我尝试从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 个答案:

答案 0 :(得分:3)

仔细检查您的驱动程序 - 对于Firebird ,或者您只是使用 Interbase 驱动程序?众所周知,Firebird团队在2.1中更改了Blob的SQLDA结构,因此不再使用Interbase驱动程序。

你有一些选择:

  1. (推荐,imho)升级到Delphi 2010 - 除了DBX Firebird驱动程序之外,你还可以获得更多的东西(更多信息见here
  2. 购买适用于Delphi 2009的Firebird的第三方驱动程序
  3. '降级'你的火鸟(当然是用它作为最后的手段)
  4. 更改连接库。是的,这可能意味着代码重写。

答案 1 :(得分:3)

也许你需要为firebird使用免费的dbx驱动程序

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:1)

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

- 的Jeroen

答案 4 :(得分:0)

FWIW,我在perl程序中通过执行没有绑定变量的语句在需要它时得到了这个错误。