Domanda

Qualcuno potrebbe spiegare il modo migliore per connettersi a un database Interbase 7.1 usando .NET / C #?

L'applicazione verrà installata su molti computer degli utenti finali, quindi meno "componenti aggiuntivi" che dovrò impacchettare meglio con la mia domanda.

È stato utile?

Soluzione

CodeGear offre un driver ADO.NET 2.0 gratuito per gli utenti registrati di InterBase qui:

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

Nota che "gli utenti registrati di InterBase" include l'edizione gratuita per sviluppatori InterBase 2007. Il download dice che è per il 2007, ma funziona perfettamente con InterBase 7 e il team InterBase di CodeGear mi ha detto che non hanno problemi con le persone che lo usano a tale scopo.

Non consiglio di usare un driver progettato per Firebird, poiché InterBase e Firebird hanno sintassi SQL leggermente diverse e differiscono anche per altre funzionalità. In particolare, penso che l'utilizzo di qualsiasi driver dipendente da fbclient.dll con InterBase sia assolutamente pericoloso.

Altri suggerimenti

Penso che il provider .net di Firebird sia uguale a quello in mono. Entrambi sono eccellenti tra l'altro.

Il codice nel file della guida funziona in molte situazioni, ma non in tutte, specialmente su macchine Windows 8.1, Windows Server 2012.

Assicurati di ottenere l'ultima InterBase_ADO.NET da embarcadero. La versione che ho aggiornato era la versione 16.0.4327.44959 di Borland.Data.AdoDbxClient.dll. (Fare clic con il tasto destro su file, proprietà, dettagli per vedere il numero di versione). L'installazione crea anche una cartella della versione x64 per 64 bit anche se non l'ho utilizzata. Ho preso di mira x86 senza problemi.

Questa installazione di ADO.NET non è necessaria su ogni macchina: devi solo includere i file seguenti nel tuo progetto e avere Interbase installato sulla macchina su cui stai eseguendo. Ho installato il driver solo sul mio computer di sviluppo.

L'installazione estrarrà tutti i file necessari che è necessario inserire nell'applicazione per connettersi al database. Verrà inoltre creato il file Leggimi ADO_NET 2_0 Driver per le istruzioni di installazione e utilizzo di InterBase XE.htm. NOTA IMPORTANTE: gli esempi di connessione DB in questo file htm della guida non funzionano il 100% delle volte. Vedi il mio esempio di codice di seguito per la soluzione.

Nessuna connessione ODBC necessaria. L'elenco dei file da includere nel progetto .NET e da copiare in locale è:

  • Borland.Data.AdoDbxClient.dll
  • Borland.Data.DbxCommonDriver.dll
  • Borland.Data.DBXInterBaseDriver.dll
  • Borland.Delphi.dll
  • Borland.VclDbRtl.dll
  • Borland.VclRtl.dll
  • dbxadapter.dll (versione x86 o x64)
  • dbxint.dll (versione x86 o x64)
  • gds32.dll (dall'installazione del database interbase)
  • interbase.msg (dall'installazione del database interbase)

Ho trovato due stringhe di connessione che hanno funzionato. Per connetterti usa una delle due stringhe di connessione:

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top