Firebird 및 Delphi 2009와 함께 "SQLDA 구조 내 잘못된 값"오류 메시지
-
13-09-2019 - |
문제
Delphi 2009 DBX 응용 프로그램의 Firebird 2.1 데이터베이스 내에서 Blob 필드를 업데이트하려고 할 때 "SQLDA 구조 내 잘못된 값"오류 메시지가 포함되어 있습니다.
그러나 다음 SQL로 tsqlquery를 실행하려고 할 때 오류 메시지가 표시됩니다. "MyTable Set Field1 = : 데이터 id = : id"
관련 델파이 코드는 다음과 같습니다.
MyQuery.ParamByName('id').AsInteger := id;
MyQuery.ParamByName('data').LoadFromFile(filename, ftBlob);
MyQuery.ExecSQL();
어디서 찾아야합니까? 이것은 초기 델파이 버전에서 작동했습니다.
해결책
드라이버를 두 번 확인하십시오 파이어 버드를 위해 아니면 그냥 사용합니다 인터베이스 이것을위한 드라이버?. Firebird 팀은 2.1에서 Blobs의 SQLDA 구조를 변경 했으므로 인터베이스 드라이버를 더 이상 사용할 수 없습니다.
여기에는 몇 가지 옵션이 있습니다.
- (추천, IMHO) Delphi 2010으로 업그레이드 - DBX 파이어 버드 드라이버 외에도 더 많은 것을 얻을 수 있습니다 (참조 여기 이상)
- Delphi 2009에서 일하는 Firebird의 타사 운전자 구매
- '다운 그레이드'당신의 파이어 버드 (물론 최후의 수단으로 사용하십시오)
- 연결 라이브러리를 변경하십시오. 예, 코드 재 작성을 의미 할 수 있습니다.
다른 팁
Firebird 용 무료 DBX 드라이버를 사용해야 할 수도 있습니다.
이것은 델파이의 인터베이스 드라이버가 표시하는 데 사용되는 종류의 암호 오류입니다.
SQL 문에 다른 수의 매개 변수가 있고 쿼리 구성 요소에 정의 된 매개 변수가있는 경우이 문제를 보았습니다.
가장 먼저 떠오르는 것은 클라이언트 dll (gds32.dll 또는 fb32.dll 또는 fbclient.dll, 이름이 사용중인 Firebird 버전에 따라 다름)이 사용중인 서버 버전과 정확히 일치하는지 확인하는 것입니다.
-jeroen
fwiw, 나는 바인드 변수가 필요하지 않은 명령문을 실행하여 Perl 프로그램 에서이 오류를 얻었습니다.