Pergunta

Eu baixei o driver do Firebird DBX de http://sites.google.com/site/dbxfirebird/ E pude compilar o projeto "Conexão de teste" e fazer com que ele seja executado. Eu apontei para o meu teste de teste assim:

procedure TMainForm.Button1Click(Sender: TObject);
var C: TSQLConnection;
begin
  C := TSQLConnection.Create(Self);
  try
    C.DriverName := 'FirebirdConnection';
    C.Params.Add('User_Name=SYSDBA');
    C.Params.Add('Password=masterkey');
    C.Params.Add('Database=C:\fbtest\test.fdb');
    C.Open;
    if C.Connected then
      ShowMessage('Connection is active')
  finally
    C.Free;
  end;
end;

Quando eu o executo, funciona bem. Mas quando eu coloquei exatamente o mesmo código em um projeto diferente, ele não funciona. Eu copiei o FBCLIENT.DLL (DLL DOISTRO INCORDIDO DO FIREBIRD, renomeado para o FBCLIENT), todas as suas dependências e o arquivo dbxdrivers.ini para a mesma pasta em que o exe do projeto está sendo executado. Não consigo ver nenhum motivo pelo qual Isso não deve funcionar, mas a chamada para .open falha com:

Project Project1.exe elevou a classe de exceção tdbxerror com a mensagem 'Driver desconhecido: FirebirdConnection'.

Novamente, isso está em chamado para abrir. A tarefa ao nome de transmissão funciona muito bem. Alguém viu esse problema antes? Por que exatamente o mesmo código funciona no projeto de teste, mas não diferente, e existe alguma maneira de consertá -lo?

Foi útil?

Solução

Eu encontrei o problema. Uma classe de carregamento para configurar o driver do banco de dados teve que ser registrado no inicialização Seção de dbxdynalink.pas. O projeto de teste incluiu o dbxdynalink em seu usos Cláusula, onde o meu não. Eu coloquei isso e agora funciona.

Outras dicas

Esse erro geralmente ocorre quando você não adiciona a respectiva unidade de driver DBX à sua lista de usos. Tente adicionar dbxfirebird à sua lista de usos.

Basta mudar c.drivername: = 'FirebirdConnection'; para C.Drivername: = 'Firebird';

e vai funcionar!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top