문제

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 구조를 변경 했으므로 인터베이스 드라이버를 더 이상 사용할 수 없습니다.

여기에는 몇 가지 옵션이 있습니다.

  1. (추천, IMHO) Delphi 2010으로 업그레이드 - DBX 파이어 버드 드라이버 외에도 더 많은 것을 얻을 수 있습니다 (참조 여기 이상)
  2. Delphi 2009에서 일하는 Firebird의 타사 운전자 구매
  3. '다운 그레이드'당신의 파이어 버드 (물론 최후의 수단으로 사용하십시오)
  4. 연결 라이브러리를 변경하십시오. 예, 코드 재 작성을 의미 할 수 있습니다.

다른 팁

Firebird 용 무료 DBX 드라이버를 사용해야 할 수도 있습니다.

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

이것은 델파이의 인터베이스 드라이버가 표시하는 데 사용되는 종류의 암호 오류입니다.

SQL 문에 다른 수의 매개 변수가 있고 쿼리 구성 요소에 정의 된 매개 변수가있는 경우이 문제를 보았습니다.

가장 먼저 떠오르는 것은 클라이언트 dll (gds32.dll 또는 fb32.dll 또는 fbclient.dll, 이름이 사용중인 Firebird 버전에 따라 다름)이 사용중인 서버 버전과 정확히 일치하는지 확인하는 것입니다.

-jeroen

fwiw, 나는 바인드 변수가 필요하지 않은 명령문을 실행하여 Perl 프로그램 에서이 오류를 얻었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top