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 版本中一直有效。

4

5 回答 5

4

这是 Delphi 的 Interbase 驱动程序用来显示的那种 crypt 错误。

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

于 2009-12-07T02:37:35.667 回答
3

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

您在这里有一些选择:

  1. (推荐,恕我直言)升级到 Delphi 2010 - 除了 DBX Firebird 驱动程序之外,您将获得更多可玩的东西(请参阅此处了解更多信息)
  2. 购买适用于 Delphi 2009 的 Firebird 的第 3 方驱动程序
  3. “降级”你的火鸟(当然,把它作为最后的手段)
  4. 更改您的连接库。是的,这可能意味着代码重写。
于 2009-12-05T16:52:05.200 回答
3

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

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

于 2009-12-06T13:04:10.733 回答
1

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

——杰伦

于 2009-12-06T19:36:54.990 回答
0

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

于 2011-12-16T08:45:28.617 回答