Frage

Ich habe mich mit der Fehlermeldung "falsche Werte in der SQLDA -Struktur" begegnet, wenn ich versuche, das BLOB -Feld in der Firebird 2.1 -Datenbank aus der DBX -Anwendung von Delphi 2009 zu aktualisieren.

Ich erhalte jedoch die Fehlermeldung, wenn ich versuche, TSQLQuery mit folgendem SQL auszuführen: "Mytable Set Field1 =: Daten, wobei id =: id" aktualisieren. "

Der relevante Delphi -Code ist:

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

Wo soll ich suchen? Dies hat in früheren Delphi -Versionen funktioniert.

War es hilfreich?

Lösung

Überprüfen Sie Ihren Fahrer - es ist es Für Firebird oder du benutzt einfach das Interbase Fahrer dafür?. Es ist bekannt, dass das Firebird -Team die SQLDA -Struktur für Blobs in 2.1 verändert hat und der Interbase -Treiber daher nicht mehr verwendet werden kann.

Sie haben hier einige Optionen:

  1. (Empfohlen, IMHO) Upgrade auf Delphi 2010 - Neben einem DBX -Firebird -Treiber erhalten Sie viel mehr Dinge zum Spielen (siehe hier für mehr)
  2. Kaufen Sie einen Drittanbieterfahrer für Firebird, der in Delphi 2009 arbeitet
  3. "Downgrade" Your Firebird (benutze ihn natürlich als letztes Mittel)
  4. Ändern Sie Ihre Konnektivitätsbibliothek. Ja, es könnte einen Umschreiben von Code implizieren.

Andere Tipps

Vielleicht müssen Sie den kostenlosen DBX -Treiber für Firebird verwenden

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

Dies ist die Art von Krypta -Fehler, mit der der Interbase -Treiber von Delphi angezeigt wird.

Ich habe dieses Problem gesehen, wenn Sie in Ihrer SQL -Anweisung unterschiedliche Parameter und in Ihrer Abfragekomponente definiert haben.

Das erste, was mir in den Sinn kommt, ist sicherzustellen, dass die Client -DLL (GDS32.DLL oder FB32.DLL oder FBCLIENT.DLL.Dll, der Name von Firebird, die Sie verwenden) genau mit der von Ihnen verwendeten Serverversion übereinstimmt.

-Jeroen

FWIW, ich habe diesen Fehler in einem Perl -Programm erhalten, indem ich eine Anweisung ohne Bindungsvariablen ausführte, wenn sie benötigt wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top