Collegamento a Firebird incorporato sul D2010
-
21-09-2019 - |
Domanda
Ho scaricato il driver Firebird DBX da http://sites.google.com/site/dbxfirebird / e sono stato in grado di compilare il progetto "test di connessione" e farlo funzionare. Ho fatto al mio test di DB in questo modo:
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 l'eseguo, funziona benissimo. Ma quando ho messo lo stesso codice esatto in un progetto diverso, non funziona. Ho copiato il fbclient.dll (driver DLL Firebird incorporato, rinominato fbclient), tutte le sue dipendenze, e il file dbxdrivers.ini nella stessa cartella come EXE del progetto è in esecuzione in. Non vedo alcuna ragione per cui questo non dovrebbe funzionare, ma la chiamata alla .Open non riesce con:
Progetto progetto1.exe sollevato un'eccezione Classe TDBXError con il messaggio 'Unknown autista:. FirebirdConnection'
Ancora una volta, questa è la chiamata a Open. L'assegnazione a DriverName funziona bene. Qualcuno ha visto questo problema prima? Perché lo stesso identico lavoro codice nel progetto di prova, ma non uno diverso, e c'è un modo per risolvere il problema?
Soluzione
Ho trovato il problema. Una classe di carico per impostare il driver di database doveva essere registrata nel di inizializzazione di DBXDynalink.pas. Il progetto di test incluso DBXDynalink nel suo usi clausola, in cui il mio non ha fatto. Ho messo dentro e ora funziona.
Altri suggerimenti
Questo errore si verifica in genere quando non si aggiunge il rispettivo driver da DBX alla tua lista usi. Prova ad aggiungere alla tua lista DBXFirebird usi.
cambiare solo C.DriverName: = 'FirebirdConnection'; per C.DriverName: = 'Firebird';
e funziona!