2016-07-12 13 views
0

Wir bekommen .ydb-Dateien der Firebird-Datenbank vom Client. Momentan haben wir einen DSN mit einigen zusätzlichen Installations-/Treibern erstellt und dann auf die Tabellen und Daten in den Dateien zugegriffen.Wie man Firebird Datenbankdateien in C# öffnet?

Wir planen, diesen Prozess auf azure Cloud-Dienst (nicht azure VM) zu verschieben, um die Erstellung von DSN usw. zu vermeiden, müssen wir auf die .ydb-Dateien aus C# -Code zugreifen.

Ich konnte nicht direkt mit firebird ado.net Provider öffnen, Ausnahmen zu werfen.

Die folgenden Schritte werden zum Erstellen von DSN in der Maschine verwendet. Es funktioniert für lange Zeit.

  1. Firebird ODBC-Setup in Windows Server

    DsnName-DSNName1,

    Treiber-IscDbc,

    Datenbank-E: \ Somefolder \ FileName.ydb

    -Client-C : \ Programme \ Firebird \ Firebird2_5 \ WOW64 \ fbclient.dll

    Datenbank Account- SYSDBA

    Passwort - masterkey

    Rolle - SYSDBA

    CharSet - Keine

  2. verwendet dann die folgenden Code C#, um den FileName.ydb den DSN zuzugreifen.

    using (var connection = new OdbcConnection("DSN=DSNName1")) 
    { 
        connection.Open(); 
        var schema = connection.GetSchema("Tables"); 
        var tableNames = new List<string>();      
    } 
    

nun den oben DSN Erstellungsprozess zu ändern, habe ich FirebirdSql.Data.FirebirdClient nuget Paket in der C# Lösung.

string connectionString = "User=SYSDBA;" + "Password=masterkey;" + 
"Database=E:\\Somefolder\\Filename.ydb;" + "Dialect=3;" + "Charset=NONE;" + 
"Role=SYSDBA;"; 

FbConnection fbConn = new FbConnection(connectionString); 
      fbConn.Open(); 

      var schema = fbConn.GetSchema("Tables"); 

Es wirft Ausnahme auf fbConn.Open(); - Die Netzwerkanforderung zum Host "localhost" konnte nicht abgeschlossen werden.

Wie Sie die .ydb-Dateien in C# direkt öffnen, ohne einen DSN zu erstellen?

+0

Zeigen Sie uns, was Sie bisher haben, schreiben Sie Ihren Code auf die Frage. Und welchen Fehler bekommst du? – Esko

+0

Haben Sie tatsächlich einen Firebird Server installiert? Da der Treiber versucht, eine Verbindung zu einem Firebird-Server auf localhost herzustellen. Wenn Sie Firebird nicht installieren möchten, müssen Sie den Firebird ADO.NET-Provider und eine eingebettete Firebird-Installation verwenden. –

+1

Beachten Sie auch, dass 'ydb' kein typisches Suffix für Firebird-Datenbanken ist (normalerweise' fdb' oder vielleicht 'gdb'). –

Antwort

0

Das größte Problem, das Sie zu haben scheinen, ist, dass Sie den Firebird-Server nicht installiert haben oder laufen, so dass Sie keine Verbindung zu ihm herstellen können und ihn darum bitten, die Datenbankdatei zu öffnen.

Sie können Firebird von http://www.firebirdsql.org/en/downloads/ herunterladen (wahrscheinlich benötigen Sie Firebird 2.5) und installieren Sie es. Dann wird in einem Projekt, das FirebirdSql.Data.FirebirdClient verweist sollten Sie in der Lage sein, mit verbinden wenig wie:

using (var connection = new FbConnection(@"User=username;Password=password;Database=D:\data\DB\database.fdb")) 
{ 
    connection.Open(); 
} 

Wenn aus irgendeinem Grund Sie nicht wollen, Firebird Server installieren, müssen Sie Embedded Firebird verwenden (die auch über den obigen Link heruntergeladen werden können).

Sie müssen sicherstellen, dass Ihre Anwendung entweder 32 Bit oder 64 Bit ausgeführt wird, und laden Sie das richtige eingebettete Firebird-Paket herunter. Legen Sie es in den Pfad oder in den Ordner Ihrer ausführbaren Datei.In der URL müssen Sie ServerType=1 hinzufügen Eingebettete Unterstützung zu erhalten (der Standard ist ServerType=0):

using (var connection = new FbConnection(@"ServerType=1;User=username;Password=password;Database=D:\data\DB\database.fdb")) 
{ 
    connection.Open(); 
}