Conexión a Firebird incrustado en D2010
-
21-09-2019 - |
Pregunta
He descargado el controlador Firebird DBX de http://sites.google.com/site/dbxfirebird / y yo he sido capaz de compilar el proyecto "Conexión de prueba" y conseguir que se ejecute. Me indicó que mi prueba de DB, así:
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;
Cuando corro, funciona bien. Pero cuando puse ese mismo código en un proyecto diferente, que no funciona. He copiado el fbclient.dll (DLL del controlador embebido Firebird, renombrado a fbclient), todas sus dependencias, y el archivo dbxdrivers.ini a la misma carpeta que EXE del proyecto se está ejecutando en. No puedo ver ninguna razón por la cual esto no debería funcionar, pero la llamada a .Open falla con:
Proyecto Project1.exe elevó excepción TDBXError clase con el mensaje 'Unknown conductor:. FirebirdConnection'
Una vez más, esto es en la llamada a Open. La asignación a DriverName funciona bien. Alguien ha visto este problema antes? ¿Por qué exactamente el mismo código de trabajo en el proyecto de prueba, pero no uno diferente, y hay alguna manera puedo solucionarlo?
Solución
He encontrado el problema. Una clase de carga para configurar el controlador de base de datos tuvo que ser registrada en el inicialización de DBXDynalink.pas. El proyecto de prueba incluyó DBXDynalink en su Aplicaciones cláusula, donde la mía no. Puse eso y ahora funciona.
Otros consejos
Este error se produce generalmente cuando no se agrega la unidad de altavoz DBX correspondiente a su lista de usos. Trate de añadir DBXFirebird a su lista de usos.
Sólo el cambio C.DriverName: = 'FirebirdConnection'; a C.DriverName: = 'Firebird';
y trabajará!