Conectando ao Firebird incorporado no D2010
-
21-09-2019 - |
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?
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!