2016-09-21 4 views
2

Code:mit Oracle Database Connecting nicht

private void Button_Click_6(object sender, RoutedEventArgs e) 
{ 
    TimerView tobj = new TimerView(); 
    tobj.Show(); 
    string OracleServer = "Data Source=(DESCRIPTION=" 
+ "(ADDRESS=(PROTOCOL=TCP)(HOST=DLDT-0897.nectechnologies.in)(PORT=1521))" 
+ "(CONNECT_DATA=(SERVICE_NAME=XE)));" 
+ "User ID=system;[email protected];"; 
    public bool Open() 
{ 
    try 
    { 
     conn = new OracleConnection(OracleServer); 
     conn.Open(); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    return false; 
} 

Fehler in conn.Open():

Warnung 1 Es gibt eine Diskrepanz zwischen der Prozessorarchitektur des Projekts war "MSIL" gebaut und die Prozessorarchitektur von die Referenz "Oracle.DataAccess, Version = 4.112.2.0, Kultur = neutral, PublicKeyToken = 89b483f429c47342, ProzessorArchitektur = AMD64", "AMD64". Diese Nichtübereinstimmung kann Laufzeitfehler verursachen. Ziehen Sie in Betracht, die Zielprozessorarchitektur Ihres Projekts über den Konfigurationsmanager zu ändern, um die Prozessorarchitekturen zwischen Ihrem Projekt und den Referenzen auszurichten, oder nehmen Sie Abhängigkeiten von Referenzen mit einer Prozessorarchitektur, die der angepeilten Prozessorarchitektur Ihres Projekts entspricht. WpfApplication

+2

klingt wie die 2-Projekte für unterschiedliche Architektur konfiguriert sind. Ihre App scheint x86 zu sein, während die Oracle-Referenz x64 – Takarii

+0

lautet. Überprüfen Sie die Formatierung Ihres Codes. Derzeit ist es schwer zu lesen. Es scheint auch einen Compiler-Fehler bezüglich der 'Open'-Methode innerhalb des Click-Handlers zu geben. – Stefan

Antwort

1

Das ODP.NET-Paket gibt es in zwei Varianten: eine für 32-Bit-Programme und eine für 64-Bit-Programme. Sie müssen einen auswählen, wenn Sie kompilieren, da sonst Probleme beim Ausführen des Programms auftreten können. Sie müssen daher vorzugsweise von MSIL in den 32-Bit-Modus wechseln (um beide Prozessorarchitekturen zu unterstützen). Sie müssen dann die 32-Bit-Version von ODP.NET einbinden (jetzt verwenden Sie 64-Bit).

Eine bessere Option könnte sein, die verwaltete ODP.NET Bibliothek zu verwenden, die beide Prozessorarchitekturen unterstützt, da es nicht auf OCI abhängt mehr. Sie können die neueste Version here finden.