3

Delphi 2009 DBX アプリケーションから Firebird 2.1 データベース内の blob フィールドを更新しようとすると、「SQLDA 構造内の値が正しくありません」というエラー メッセージが表示されて苦労しています。

ただし、次の SQL で TSQLQuery を実行しようとすると、エラー メッセージが表示されます。

関連する Delphi コードは次のとおりです。

MyQuery.ParamByName('id').AsInteger := id;
MyQuery.ParamByName('data').LoadFromFile(filename, ftBlob);
MyQuery.ExecSQL();

どこを見ればいいですか?これは、以前の Delphi バージョンでは機能していました。

4

5 に答える 5

4

これは、Delphi の Interbase ドライバが表示するために使用される一種の暗号化エラーです。

SQL ステートメントとクエリ コンポーネントで定義されたパラメーターの数が異なる場合に、この問題が発生しました。

于 2009-12-07T02:37:35.667 に答える
3

多分あなたはfirebirdのために無料のdbxドライバーを使う必要があります

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

于 2009-12-06T13:04:10.733 に答える
3

ドライバーを再確認してください - Firebird用ですか、それともInterbaseドライバーを使用しているだけですか? Firebird チームが 2.1 で Blob の SQLDA 構造を変更したため、Interbase ドライバーを使用できなくなったことが知られています。

ここにはいくつかのオプションがあります。

  1. (推奨、imho)Delphi 2010 にアップグレード - DBX Firebird ドライバ以外にも、さらに多くの操作を行うことができます(詳細については、こちらを参照してください)。
  2. Delphi 2009 で動作する Firebird 用のサードパーティ ドライバを購入する
  3. Firebird を「ダウングレード」します (もちろん、最後の手段として使用してください)。
  4. 接続ライブラリを変更します。はい、コードの書き直しを意味する可能性があります。
于 2009-12-05T16:52:05.200 に答える
1

最初に頭に浮かぶのは、クライアント dll (gds32.dll または fb32.dll または fbclient.dll。名前は、使用している Firebird のバージョンによって異なります) が、使用しているサーバーのバージョンと正確に一致していることを確認することです。

--jeroen

于 2009-12-06T19:36:54.990 に答える
0

FWIW、必要なときにバインド変数なしでステートメントを実行することにより、perl プログラムでこのエラーが発生しました。

于 2011-12-16T08:45:28.617 に答える