2017-06-26 4 views
0

Ich versuche, eine DBF-Datei in C# zu erstellen. Irgendwie, wenn ich versuche, die Verbindung zu OLEDB zu öffnen, wird das Programm beendet, ohne eine Ausnahme zu werfen. Unten ist der Code:Das Öffnen der Verbindung zu OLEDB beendet den Code

private void CreateDBFFile() 
    { 
     try 
     { 
      using (var dBaseConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; " + @" Data Source=k:\Temp; " + @"Extended Properties=dBase IV")) 
      { 
       dBaseConnection.Open(); 

       string createTableSyntax = 
        "Create Table Person " + 
        "(Name char(50), City char(50), Phone char(20), Zip decimal(5))"; 
       var cmd = new OleDbCommand(createTableSyntax, dBaseConnection); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
     catch (Exception ex) 
     { 
      string x = ex.Message; 

     } 

    } 

Der Fehler hier geworfen wird:

dBaseConnection.Open(); 

ich die Ereignisprotokolle überprüft und dass entweder nicht helfen. Unten ist das Fehlerprotokoll aus dem Ereignisprotokoll: '

Faulting application name: iisexpress.exe, version: 10.0.14358.1000, time 
stamp: 0x574fc56b 
Faulting module name: clr.dll, version: 4.6.1649.1, time stamp: 0x58f97fe6 
Exception code: 0xc0000005 
Fault offset: 0x0045068d 
Faulting process id: 0x3354 
Faulting application start time: 0x01d2eeacd40d1e91 
Faulting application path: C:\Program Files (x86)\IIS Express\iisexpress.exe 
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Report Id: 18960866-5aa0-11e7-b3f6-005056c00008 

Jede Hilfe wird sehr geschätzt.

+0

Erhalten Sie die Ausnahme und sehen Sie sich die Message-Eigenschaft an (der Inhalt der Zeichenfolge 'x'), um bessere Fehlerinformationen zu erhalten. Du bekommst bereits die Zeichenfolge ... es wird nützlich sein, tatsächlich zu sehen, was es sagt. –

+0

Ich hätte die Ausnahme erhalten, wenn der Code eine Ausnahme ausgelöst hätte. Der Code wird nur beendet, ohne eine Ausnahme an Zeile zu werfen: dbconnection.open() – Anjali

Antwort

0

Die Art, wie Sie Ihre Verbindung haben, ist nicht ideal.

Tun Sie dies stattdessen Schritt durch den Code und Sie sollten in der Lage sein, eine Ausnahme zu erhalten, oder es würde funktionieren: Setzen Sie Ihre Verbindungszeichenfolge in web.config.

<connectionStrings> 
    <add name="Connection" connectionString="Data Source=k:\Temp; xtended Properties=dBase IV Provider=Microsoft.Jet.OLEDB.4.0" />  
    </connectionStrings> 


string connection = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString; 
      using (OleDbConnection dBaseConnection = new OleDbConnection(connection)) 
      { 
       if (dBaseConnection.State == ConnectionState.Closed) 
       { 
        dBaseConnection.Open(); 
       } 
      } 
+0

Ich setze Verbindungszeichenfolge in web.config-Datei. Um meinen gesamten Code anzuzeigen, gebe ich die Verbindungszeichenfolge in die using-Anweisung ein. Außerdem wird durch das Einfügen der Verbindungszeichenfolge in die web.config-Datei der Code nicht geändert. Es wird nur die Verbindungszeichenfolge aus der Konfigurationsdatei gelesen und nicht der Code selbst. Der Code wird immer noch beendet, wenn ich versuche, die Verbindung zu öffnen. – Anjali

+0

Ja, ich verstehe, dass es sich nicht ändern wird. Nur dass es sauberer ist, aber ich verstehe, warum du es nur zum Anzeigen des gesamten Codes benutzt hast. Freut mich, dass es funktioniert hat. – Aman

1

Sobald ich diese Zeile aus meiner Verbindungszeichenfolge entfernt

 "Extended Properties=dBase IV ". 

Der Code arbeiten begann.

Verwandte Themen