错误消息“SQLDA 结构中的值不正确”与 Firebird 和 Delphi 2009
当我尝试从 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 版本中一直有效。
I'm strugling with error message "Incorrect values within SQLDA structure" when I'm trying to update blob field within Firebird 2.1 database from Delphi 2009 DBX application.
However I get the error message when I'm trying to execute TSQLQuery with following SQL: "update MYTABLE set FIELD1= :data where id = :id"
The relevant delphi code is:
MyQuery.ParamByName('id').AsInteger := id;
MyQuery.ParamByName('data').LoadFromFile(filename, ftBlob);
MyQuery.ExecSQL();
Where should I be looking? This has been working in earlier Delphi versions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这是 Delphi 的 Interbase 驱动程序用来显示的加密错误类型。
当 SQL 语句中的参数数量与查询组件中定义的参数数量不同时,我就遇到过这个问题。
This is the kind of crypt error that Delphi's Interbase driver is used to show.
I've seen this problem when you have different numbers of parameters in your SQL statement and the ones defined in your query component.
仔细检查您的驱动程序 - 它是用于 Firebird,还是您只是使用 Interbase 驱动程序?据了解,Firebird 团队在 2.1 中更改了 Blob 的 SQLDA 结构,因此无法再使用 Interbase 驱动程序。
您在这里有一些选择:(
Double check your driver - it is for Firebird or you just use the Interbase driver for this?. It is known that the Firebird team changed the SQLDA structure for Blobs in 2.1 and, hence, the Interbase driver cannot be used anymore.
You have some options here:
也许您需要使用 firebird 的免费 dbx 驱动程序
http://sites.google.com/site/ dbxfirebird/
maybe you need to use the free dbx driver for firebird
http://sites.google.com/site/dbxfirebird/
首先想到的是确保客户端 dll(gds32.dll 或 fb32.dll 或 fbclient.dll,名称取决于您使用的 Firebird 版本)与您使用的服务器版本完全匹配。
——杰罗恩
The first thing that comes to mind is to make sure that the the client dll (gds32.dll or fb32.dll or fbclient.dll, the name depends on which version of Firebird you are using) exactly matches the server version you are using.
--jeroen
FWIW,当需要它们时,我通过在没有绑定变量的情况下执行语句来在 perl 程序中遇到此错误。
FWIW, I got this error in a perl program by executing a statement without bind variables, when it needed them.