Сообщение об ошибке «Неверные значения в структуре SQLDA» с Firebird и Delphi 2009 - PullRequest
3 голосов
/ 05 декабря 2009

Я сталкиваюсь с сообщением об ошибке "Неверные значения в структуре SQLDA", когда пытаюсь обновить поле BLOB-объектов в базе данных Firebird 2.1 из приложения Delphi 2009 DBX.

Однако я получаю сообщение об ошибке, когда пытаюсь выполнить TSQLQuery со следующим SQL: «обновить MYTABLE set FIELD1 =: данные, где id =: id»

Соответствующий код delphi:

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

Где мне искать? Это работало в более ранних версиях Delphi.

Ответы [ 5 ]

3 голосов
/ 07 декабря 2009

Это ошибка склепа, которую использует драйвер Delphi Interbase.

Я сталкивался с этой проблемой, когда в вашем операторе SQL указано разное количество параметров, а не те, которые определены в компоненте запроса.

3 голосов
/ 06 декабря 2009

возможно вам нужно использовать бесплатный драйвер dbx для firebird

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

3 голосов
/ 05 декабря 2009

Дважды проверьте ваш драйвер - это для Firebird или вы просто используете драйвер Interbase для этого ?. Известно, что команда Firebird изменила структуру SQLDA для Blobs в 2.1 и, следовательно, драйвер Interbase больше не может использоваться.

У вас есть несколько вариантов здесь:

  1. (рекомендуется, imho) Обновление до Delphi 2010 - помимо драйвера DBX Firebird вы получите гораздо больше возможностей для игры (подробнее см. здесь )
  2. Купите сторонний драйвер для Firebird, который работает в Delphi 2009
  3. Понижение версии вашей Firebird (конечно, используйте ее в крайнем случае)
  4. Измените свою библиотеку подключений. Да, это может означать переписывание кода.
1 голос
/ 06 декабря 2009

Первое, что приходит на ум, - убедиться, что клиентская DLL (gds32.dll или fb32.dll или fbclient.dll, имя зависит от используемой версии Firebird) точно соответствует версии сервера, которую вы используете. Используем.

- Йерун

0 голосов
/ 16 декабря 2011

FWIW, я получил эту ошибку в программе на Perl, выполнив инструкцию без переменных связывания, когда они были нужны.

...