2008-10-20 3 views

Répondre

4

CodeGear offre un pilote ADO.NET 2.0 gratuit pour les utilisateurs enregistrés de Interbase ici:

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

Notez que "les utilisateurs enregistrés de Interbase" comprend la libre Interbase 2007 développeurs Edition. Le téléchargement dit que c'est pour 2007, mais ça fonctionne très bien avec InterBase 7, et l'équipe InterBase de CodeGear m'a dit qu'ils n'ont aucun problème avec les gens qui l'utilisent à cette fin.

Je ne recommande pas d'utiliser un pilote conçu pour Firebird, étant donné qu'InterBase et Firebird ont des syntaxes SQL légèrement différentes et diffèrent également dans d'autres fonctionnalités. En particulier, je pense que l'utilisation de n'importe quel pilote dépendant de fbclient.dll avec InterBase est carrément dangereux.

+0

Merci - cela a très bien fonctionné. Le code de l'exemple C# a été inclus dans la lecture moi aussi. –

+1

En raison de modifications dans CodeCentral, l'URL spécifiée ne fonctionnera plus comme prévu. S'il vous plaît utiliser http://cc.embarcadero.com/item/25497 à la place – Cleggy

+0

Merci, Cleggy; fixé. –

0

Je pense que le fournisseur de l'Oiseau de feu est le même que celui qui est en mono. Les deux sont excellents btw.

+0

Pas exactement http://blog.cincura.net/230835-firebirdclient-and-interbase/ –

+0

Ils ne sont pas les mêmes. –

0

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

Assurez-vous d'avoir la dernière version d'InterBase_ADO.NET d'embarcadero. La version que j'ai mise à jour était la version 16.0.4327.44959 de Borland.Data.AdoDbxClient.dll. (Faites un clic 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 problèmes.

Cette installation ADO.NET n'est pas nécessaire sur toutes les machines: il vous suffit d'inclure les fichiers ci-dessous dans votre projet et d'installer Interbase sur la machine sur laquelle vous travaillez. J'ai seulement installé le pilote sur mon ordinateur de développement.

L'installation va extraire tous les fichiers nécessaires à la mise en place de votre application pour vous connecter à la base de données. Il créera également le fichier readme ADO_NET 2_0 Driver for InterBase XE Installation and Usage Instructions.htm. REMARQUE IMPORTANTE: les exemples de connexion DB dans ce fichier htm d'aide 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 sont locaux:

  • Borland.Data.AdoDbxClient.dll
  • Borland.Data.DbxCommonDriver.dll
  • Borland.Data. DBXInterBaseDriver.dll
  • Borland.Delphi.dll
  • Borland.VclDbRtl.dll
  • Borland.VclRtl.dll
  • dbxadapter.dll (x86 ou version 64 bits)
  • dbxint.dll (x86 ou une version x64)
  • gds32.dll (de la ınterbase DB installation)
  • interbase .msg (de l'installation DB interbase)

J'ai trouvé deux chaînes de connexion qui ont fonctionné. Pour vous connecter utilisez l'une des deux chaînes de connexion:

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(); 
Questions connexes