2015-06-22 12 views
12

Ich entwickle eine kleine Anwendung, die Protokollierung vereinfachen wird, tut dies, indem Sie einige Eingaben in eine MS Access-Datenbank durch OleDB hinzufügen.SEHException auf OleDb-Verbindung geöffnet

Jetzt testet das durch FSI wie erwartet. Wenn ich diese API jedoch von einem C# WPF-Projekt verwende, wird ein SEHException um geworfen. Ich mache mir wirklich den Kopf darüber, warum das passiert.

bearbeiten

Wie vorgeschlagen, ich habe auch versucht, den gleichen Code rein in C# und im selben Projekt zu implementieren, wird es die gleiche Ausnahme an der gleichen Stelle werfen, aber ich bin Entsendung des Code für Referenz.

class MsAccessDatabase : IArenaWinsDatabase { 
     private OleDbConnection connection = new OleDbConnection(connectionString); 

     private OleDbCommand SubmitCommand(DateTime date, int wins) { 
      return new OleDbCommand("INSERT INTO ArenaStats ([Date], [Wins]) VALUES (@Date, @Wins)") { 
       Connection = connection, 
       CommandType = System.Data.CommandType.Text, 
       Parameters = { 
        new OleDbParameter("@Date", date), 
        new OleDbParameter("@Wins", wins) 
       } 
      }; 
     } 

     public void Submit(DateTime date, int wins) { 
      try { 
       connection.Open(); 
       SubmitCommand(date, wins).ExecuteNonQuery(); 
      } 
      finally { 
       connection.Close(); 
      } 
     } 
    } 
+0

Haben Sie versucht, es mit dem entsprechenden C# -Code innerhalb Ihres WPF p zu ersetzen roject und sehen, ob der Fehler immer noch auftritt? – AlexFoxGill

+0

Was sagt die Ausnahme? –

+0

@FyodorSoikin '' Externe Komponente hat eine Ausnahme ausgelöst.'' –

Antwort

9

Mit etwas Hilfe von Philip konnte ich es herausfinden. Es scheint, dass FSI standardmäßig so konfiguriert ist, dass es standardmäßig in 64-Bit ausgeführt wird, während das WPF-Projekt auf "32-Bit bevorzugen" eingestellt ist. Durch Ändern der Zielplattform für das WPF-Projekt auf 64-Bit wurde das Problem behoben.

1

Beim Versuch, den folgenden Code auszuführen:

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", FilePath); 
OleDbConnection OleDbConnection = new System.Data.OleDb.OleDbConnection(connectionString); 
OleDbConnection.Open(); 

Eine SEHException Ausnahme zur Laufzeit ausgelöst wird, mit der Fehlermeldung ‚externe Komponente hat eine Ausnahme geworfen‘

Dies wird in der Regel Wenn die Buildkonfigurationsplattform in Visual Studio nicht korrekt ist, kann dies in beiden Buildkonfigurationsplattformen x86 und x64 auftreten.

Dies ist aufgrund einer fehlenden Übereinstimmung zwischen der Build-Konfiguration Plattform Ihres Projekts und der Microsoft Access-Datenbank-Engine, die auf Ihrem Computer installiert ist.

Um diesen Fehler zu beheben:

  • Ändern Sie die Build-Konfiguration Plattform in Visual Studio - stellen Sie sicher, dass es die Microsoft Access-Datenbank-Engine-Version auf Ihrem Rechner
  • Recompile passt und Ihr Projekt aus
  • Der Laufzeitfehler sollte nun aufgelöst werden
Verwandte Themen