Question

Quelqu'un pourrait-il expliquer le meilleur moyen de se connecter à une base de données Interbase 7.1 à l'aide de .NET / C #?

L’application sera installée sur de nombreux ordinateurs des utilisateurs finaux de manière à ce que les "& add-ons" & moins; que je devrai emballer avec mon application le mieux.

Était-ce utile?

La solution

CodeGear propose un pilote gratuit ADO.NET 2.0 pour les utilisateurs enregistrés d’InterBase ici:

http://cc.embarcadero.com/item/25497

Notez que " les utilisateurs enregistrés d'InterBase " inclut l’édition gratuite pour les développeurs InterBase 2007. Le téléchargement indique que c'est pour 2007, mais cela fonctionne bien avec InterBase 7, et l'équipe InterBase de CodeGear m'a dit qu'ils n'avaient aucun problème avec les personnes l'utilisant à cette fin.

Je ne recommande pas l'utilisation d'un pilote conçu pour Firebird, car InterBase et Firebird ont des syntaxes SQL légèrement différentes et diffèrent également par d'autres fonctionnalités. En particulier, je pense que l’utilisation de tout pilote dépendant de fbclient.dll avec InterBase est carrément dangereuse.

Autres conseils

Je pense que le fournisseur .net Firebird est identique à celui qui est en mono. Les deux sont excellents d'ailleurs.

Le code du fichier d'aide fonctionne dans de nombreuses situations, mais pas toutes, en particulier sur les ordinateurs Windows 8.1 et Windows Server 2012.

Assurez-vous d’obtenir la dernière version d’InterBase_ADO.NET de embarcadero. La version que j'ai mise à jour était la version 16.0.4327.44959 de Borland.Data.AdoDbxClient.dll. (Cliquez avec le bouton droit sur le fichier, les propriétés, les détails pour voir le numéro de version). L'installation crée également un dossier de version x64 pour 64 bits même si je ne l'ai pas utilisé. J'ai ciblé x86 sans aucun problème.

Cette installation ADO.NET n’est pas nécessaire sur chaque machine. Il vous suffit d’inclure les fichiers ci-dessous dans votre projet et d’installer Interbase sur la machine sur laquelle vous exécutez. J'ai uniquement installé le pilote sur mon ordinateur de développement.

L’installation extraira tous les fichiers nécessaires à votre application pour vous connecter à la base de données. Il créera également le fichier readme ADO_NET 2_0, Pilote pour Instructions d’installation et d’utilisation InterBase XE.htm. REMARQUE IMPORTANTE: les exemples de connexion à la base de données de ce fichier d'aide htm ne fonctionnent pas 100% du temps. Voir mon exemple de code ci-dessous pour la solution.

Aucune connexion ODBC nécessaire. La liste des fichiers à inclure dans votre projet .NET et à copier localement est la suivante:

  • Borland.Data.AdoDbxClient.dll
  • Borland.Data.DbxCommonDriver.dll
  • Borland.Data.DBXInterBaseDriver.dll
  • Borland.Delphi.dll
  • Borland.VclDbRtl.dll
  • Borland.VclRtl.dll
  • dbxadapter.dll (version x86 ou x64)
  • dbxint.dll (version x86 ou x64)
  • gds32.dll (à partir de l'installation de la base de données interbase)
  • interbase.msg (à partir de l'installation de la base de données interbase)

J'ai trouvé deux chaînes de connexion qui fonctionnaient. Pour vous connecter, utilisez l’une des deux chaînes de connexion suivantes:

connectionstring1 = "DriverName=Interbase;Database=" + database + ";User_Name=" + userid + ";Password=" + password;
connectionstring1 = connectionstring1 + ";SQLDialect=3;MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,";
connectionstring1 = connectionstring1 + "PublicKeyToken=91d62ebb5b0d1b1b;GetDriverFunc=getSQLDriverINTERBASE;LibraryName=dbxint30.dll;VendorLib=GDS32.DLL";

connectionstring2 = “User_Name="+userid+";Password="+password+";Database="+database+";ServerType=0;Charset=NONE;LibraryName=.\\dbxint.dll;VendorLib=GDS32.DLL;GetDriverFunc=getSQLDriverINTERBASE;SQLDialect=3";


GlobalObjects.dbconn = (TAdoDbxConnection)TAdoDbxInterBaseProviderFactory.Instance.CreateConnection();

GlobalObjects.database = databasepath;
GlobalObjects.dbconn.ConnectionString = connectionstring1;  //or connectionstring2
GlobalObjects.dbconn.Open();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top