2016-09-21 129 views
2

代码:与Oracle数据库连接失败

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; 
} 

错误conn.Open()

警告1有该项目正在建设“MSIL”的处理器架构和处理器架构之间的不匹配参考“Oracle.DataAccess,Version = 4.112.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342,processorArchitecture = AMD64”,“AMD64”。这种不匹配可能会导致运行时失败。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者使用与项目的目标处理器体系结构相匹配的处理器体系结构来依赖引用。 WpfApplication

+2

听起来像2个项目配置为不同的架构。你的应用看起来是x86的,而oracle的参考是x64 – Takarii

+0

请检查你的代码的格式。目前这使它很难阅读。在点击处理程序中,似乎还有一个关于“Open”方法的编译器错误。 – Stefan

回答

1

ODP.NET软件包有两种版本:一种用于32位程序,另一种用于64位程序。编译时必须选择一个,否则在运行程序时可能会遇到麻烦。所以你必须最好从MSIL切换到32位模式(以支持两种处理器架构)。您需要包含32位版本的ODP.NET(现在您使用的是64位)。

更好的选择可能是使用托管的ODP.NET库,它支持两种处理器体系结构,因为它不再依赖于OCI。你可以找到最新版本here