Ich erhalte einen Fehler, wenn ich versuche, von einer C # 2008 Express Edition-Anwendung, die ich gerade entwickle, eine Verbindung zu einer entfernten Oracle 10g-Datenbank herzustellen. Ich versuche, einen minimalistischen, nicht aufdringlichen Ansatz für die Entwicklung im Hinblick auf die ClickOnce-Bereitstellung auf Benutzerarbeitsstationen zu verwenden.
In Bezug auf die oben genannten habe ich die folgenden Dokumente untersucht (unter anderem ..) -
Verbinden Sie sich mit Oracle mit Odp .net und das OCI von C #
Angesichts des Fehlers, den ich erlebt habe, habe ich eine einfache Test-App erstellt. bestehend aus einer einzelnen (wpf) Seite mit einem Knopf. Im Click-Event der Schaltfläche versuche ich eine Verbindung zu einer Oracle-Datenbank herzustellen -
%Vor%Nach den Informationen in den obigen Artikeln habe ich sichergestellt, dass die folgenden DLLs in meinem "bin" -Ordner sind -
• oci.dll
• ociw32.dll
• orannzbb10.dll
• oraocci10.dll
• oraociicus.dll
• msvcr71.dll
(der letzte Name in Verzweiflung ...) und haben auf 'Oracle.DataAccess.dll' verwiesen.
Die Fehlermeldung (bei 'catch (OracleException dbEx)') lautet -
%Vor%Zusätzlich wird Folgendes berichtet -
%Vor%Ich nehme von der NullReferenceException in der Datenquelle an, dass das Problem in einer der dlls (?) liegt, da ich die OracleConnection oben "neu" mache, bevor ich versuche, darauf zu verweisen.
Darüber hinaus springt die Codeausführung die 'catch (NullReferenceException nullExcept)' und geht direkt zum OracleException catch.
Entschuldigen Sie bitte das Weitergehen, aber hoffen Sie, dass das Sinn macht? Jede Hilfe / Beratung geschätzt!
OK, sehr spät, um auf diese Entschuldigung zurückzukommen!
In der Zwischenzeit wurde unsere Datenbank aktualisiert (!) und die DLL-Liste geändert, um -
einzuschließenvon den '10' Versionen, immer noch ohne Erfolg, ich bearbeitet App.xaml (nach einer ausführlichen Suche hier und im Internet) mit den folgenden -
%Vor%Das bindingRedirect hat es geschafft!
Die DLLs scheinen extrem abhängig von kompatiblen Versionsnummern
zu seinIch wünschte ich könnte sagen, dass ich wirklich verstanden habe wie das funktioniert, aber es funktioniert und ich habe jetzt funktionierende Verbindungen ...
Stellen Sie sicher, dass ODAC ordnungsgemäß eingerichtet ist. Ich würde vorschlagen, TNSNAMES zu verwenden (Sie sollten nicht alle diese Informationen in einer Verbindungszeichenfolge imo haben). Weitere Informationen finden Sie im Abschnitt Setup von TNSNAMES in diesem Dokument (11.2). Siehe auch den unteren Abschnitt für häufige Verbindungsprobleme
Sobald dies erledigt ist, sollte es so einfach sein, wie die Verbindungszeichenfolge in die Einstellungseigenschaft Ihres Projekts einzufügen und zu tun:
%Vor%In Ihrem Beispiel wurde Ihr oraConnect nicht instanziiert (Sie haben nur "OracleConnection oraConnect"), so dass der "neue OracleConnection" -Teil, der fehlschlägt, zu einer Nullreferenzausnahme führt (wenn ich Ihre Erklärung verstehe, wo es sowieso bricht ). Debugger in VS sollte hier auch helfen;)
BEARBEITEN: Vielleicht möchten Sie eine einfache Testkonsole mit nur einer offenen / schließenden Verbindung einrichten. Dadurch können Sie möglicherweise andere Geräusche als die ordnungsgemäße Einrichtung Ihres ODAC-Setups beseitigen. Etwas wie (ungetestet, nehme tnsnames setup an):
mit ...
%Vor%Versuchen Sie, das auszuführen und berichten Sie, was von der Konsole kommt.
Tags und Links c# oracle clickonce oracleexception