• 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。


    本机环境 win10 64位系统,vs2013 32bit 版本,Oracle 安装在本机包括服务端和客户端都是 64bit 的

    在测试用.net 连接Oracle 数据库的时候,总是出现以上异常,找寻众多解决方法,如修改web 项目平台为x86 ,或者使用IIS调试等等,我觉得都不是办法,最后发现最好的一种解决方案如下:

      下载 instantclient_11_2.zip 文件包,解压后,可以放在oracle安装路径后者其他地方都行

    在系统的环境变量path中,将OracleInstantClient的路径设置在oracle的路径之前就可以了,这正是安装版和解压版的区别所在(系统变量),将 D:appinstantclient_11_2 放在Path中 Oracle路径的前面,完美解决

      注意:Path 中设置的 路径一定要放在oracle 的路径前面, 记得修改 instantclient_11_2 文件夹E:appinstantclient_11_2 etworkADMIN nsnames.ora 文件里面的配置信息

    tnsnames.ora 文件:

     1 # TNSNAMES.ORA Network Configuration File: C:oracleora90
    etworkadmin	nsnames.ora
     2 # Generated by Oracle configuration tools.
     3 
     4 #sample
     5 
     6 #DATABASENAME =
     7 #  (DESCRIPTION =
     8 #    (ADDRESS_LIST =
     9 #      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    10 #    )
    11 #    (CONNECT_DATA =
    12 #      (SERVICE_NAME = servicename)
    13 #    )
    14 #  )
    15 
    16 orcl=
    17   (DESCRIPTION =
    18     (ADDRESS_LIST =
    19       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT =1521))
    20     )
    21     (CONNECT_DATA =
    22       (SERVICE_NAME =orcl)
    23     )
    24   )

    测试代码如下:  

     1     public class SqlHelper
     2     {
     3         private static string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ToString();
     4         public static DataTable Query(string sql)
     5         {
     6             DataTable dt = new DataTable();
     7             using (OracleConnection conn = new OracleConnection(connStr))
     8             {
     9                 conn.Open();
    10                 OracleCommand cmd = new OracleCommand(sql,conn);
    11                 OracleDataAdapter adapter = new OracleDataAdapter(cmd);
    12                 adapter.Fill(dt);
    13                 return dt;
    14             }
    15         }
    16     }

    配置文件 config

     1 <configuration>
     2   <connectionStrings>
     3     <add name="connStr" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
          (HOST = localhost)(PORT =1521)))(CONNECT_DATA =(SERVICE_NAME =orcl)));user=***; password=******;
          persist security info=false;Min Pool Size=10;Max Pool Size=100;Pooling=true;
    " />
        <!--<add name="connStr" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
          (HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));User Id=***;Password=***;"/>--> 4 </connectionStrings> 5 <system.web> 6 <compilation debug="true" targetFramework="4.5" /> 7 <httpRuntime targetFramework="4.5" /> 8 </system.web> 9 10 </configuration>
  • 相关阅读:
    python 查看安装包列表
    Centos7 linux下通过源码安装redis以及使用
    python 安装pip
    python3.7.2 pip 出现locations that require TLS/SSL异常处理方法
    Xshell报错“The remote SSH server rejected X11 forwarding request.”
    ERROR: child process failed, exited with error number 100
    centos7 (ifconfig不能使用) -bash: ifconfig: command not found
    gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now
    Centos7 安装python3.7.2
    Python安装常见问题:zipimport.ZipImportError: can't decompress data; zlib not available 解决办法
  • 原文地址:https://www.cnblogs.com/yougmi/p/6959778.html
Copyright © 2020-2023  润新知