Message d'erreur « valeurs incorrectes dans la structure SQLDA » avec Firebird et Delphi 2009

StackOverflow https://stackoverflow.com/questions/1852290

Question

Je strugling avec le message d'erreur "valeurs incorrectes dans la structure SQLDA" quand je suis en train de mettre à jour champ blob au sein de la base de données Firebird 2.1 de Delphi 2009 application DBX.

Cependant, je reçois le message d'erreur lorsque je suis en train d'exécuter TSQLQuery avec SQL suivante: "mise à jour MYTABLE = définir FIELD1: données où id =: id"

Le code delphi pertinent est:

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

Où dois-je regarder? Cela a travaillé dans les versions Delphi antérieures.

Était-ce utile?

La solution

Vérifiez votre pilote - il est Firebird ou que vous utilisez le pilote Interbase pour cette ?. On sait que l'équipe Firebird a changé la structure SQLDA pour Blobs en 2.1 et, par conséquent, le pilote Interbase ne peut plus être utilisé.

Vous avez des options:

  1. (recommandé, IMHO) mise à niveau vers Delphi 2010 - en plus d'un pilote DBX Firebird vous obtiendrez beaucoup plus de choses à jouer avec (voir ici plus)
  2. Acheter un pilote 3ème partie pour Firebird qui fonctionne dans Delphi 2009
  3. 'Downgrade votre Firebird (utiliser en dernier recours, bien sûr)
  4. Changer votre bibliothèque de connectivité. Oui, il pourrait impliquer la réécriture de code.

Autres conseils

vous devez peut-être utiliser le pilote dbx gratuit pour firebird

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

Ce genre d'erreur crypte que le pilote de Delphi Interbase est utilisé pour afficher.

Je l'ai vu ce problème lorsque vous avez un nombre différent de paramètres dans votre instruction SQL et celles définies dans votre composant de requête.

La première chose qui vient à l'esprit est de vous assurer que le dll client (ou gds32.dll fb32.dll ou fbclient.dll, le nom dépend de la version de Firebird que vous utilisez) correspond exactement à la version du serveur que vous utilisent.

- jeroen

FWIW, j'ai eu cette erreur dans un programme Perl en exécutant une instruction sans variables de liaison, quand il en avait besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top