Question

J'ai téléchargé le pilote Firebird DBX de http://sites.google.com/site/dbxfirebird / et je suis en mesure de compiler le projet « test de connexion » et le faire fonctionner. Je l'ai fait remarquer à mon test DB comme ceci:

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;

Quand je lance, il fonctionne très bien. Mais quand je mets ce même code exact dans un autre projet, il ne fonctionne pas. J'ai copié le fbclient.dll (DLL du pilote Firebird embedded, renommé fbclient), toutes ses dépendances, et le fichier dbxdrivers.ini dans le même dossier que est en cours d'exécution dans le EXE du projet. Je ne vois aucune raison pour laquelle cela ne devrait pas fonctionner, mais l'appel à .Open échoue avec:

  

Projet Project1.exe soulevé exception   classe TDBXError avec le message « Unknown   conducteur:. FirebirdConnection »

Encore une fois, cela est l'appel à ouvrir. L'affectation à DriverName fonctionne très bien. Quelqu'un at-il vu ce problème avant? Pourquoi le travail même code exact dans le projet de test mais pas un autre, et est-il possible que je peux le réparer?

Était-ce utile?

La solution

J'ai trouvé le problème. Une classe de chargement pour configurer le pilote de base de données doit être enregistrée dans la section initialisation de DBXDynalink.pas. Le projet de test inclus dans son DBXDynalink utilise article, où le mien n'a pas. Je mets que et maintenant il fonctionne.

Autres conseils

Cette erreur se produit généralement lorsque vous n'ajoutez pas l'unité pilote DBX correspondant à votre liste d'utilisations. Essayez d'ajouter DBXFirebird à votre liste d'utilisations.

Il suffit de changer C.DriverName: = 'FirebirdConnection'; à C.DriverName: = 'Firebird';

et fonctionnera!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top