当我尝试从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版本中使用。
答案 0 :(得分:3)
仔细检查您的驱动程序 - 对于Firebird ,或者您只是使用 Interbase 驱动程序?众所周知,Firebird团队在2.1中更改了Blob的SQLDA结构,因此不再使用Interbase驱动程序。
你有一些选择:
答案 1 :(得分:3)
也许你需要为firebird使用免费的dbx驱动程序
答案 2 :(得分:3)
这是Delphi的Interbase驱动程序用于显示的那种加密错误。
当您在SQL语句中使用不同数量的参数以及查询组件中定义的参数时,我已经看到了这个问题。
答案 3 :(得分:1)
首先想到的是确保客户端dll(gds32.dll或fb32.dll或fbclient.dll,名称取决于您使用的Firebird版本)与您的服务器版本完全匹配正在使用。
- 的Jeroen
答案 4 :(得分:0)
FWIW,我在perl程序中通过执行没有绑定变量的语句在需要它时得到了这个错误。