Сообщение об ошибке “Неправильные значения в структуре SQLDA” с Firebird и Delphi 2009

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

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Здесь у вас есть несколько вариантов:

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

Другие советы

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

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

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

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

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

--джерун

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top