C# .net oracle提供程序的BadImageFormatException

C# .net oracle提供程序的BadImageFormatException,c#,.net,oracle,C#,.net,Oracle,我使用的是Visual Studio 2012(64位)和oracle 11g(64位)。当我连接oracle数据库时,出现以下错误 尝试加载Oracle客户端库引发了BadImageFormatException。 在64位模式和32位模式下运行时会出现此问题 已安装Oracle客户端组件 我花了很多时间来解决这个问题。但他没有这样做 示例代码 using System; using System.Data; using System.Data.OracleClient; //Add This

我使用的是Visual Studio 2012(64位)和oracle 11g(64位)。当我连接oracle数据库时,出现以下错误

尝试加载Oracle客户端库引发了BadImageFormatException。 在64位模式和32位模式下运行时会出现此问题 已安装Oracle客户端组件

我花了很多时间来解决这个问题。但他没有这样做

示例代码

using System;
using System.Data;
using System.Data.OracleClient; //Add This

namespace Oracle_database
{
    class Program
    {
        static void Main(string[] args)
        {
            OracleConnection con = new OracleConnection();

            //using connection string attributes to connect to Oracle Database
            con.ConnectionString = "User Id=abc;Password=12345;Data Source=ORCL";
            con.Open();

            DateTime fromDate = DateTime.Now.AddDays(-760);
            DateTime toDate = DateTime.Now.AddDays(-760);

            string sd = fromDate.Year + fromDate.Month.ToString("00") + fromDate.Day.ToString("00");
            string ed = toDate.Year + toDate.Month.ToString("00") + toDate.Day.ToString("00");

            var cmd = new OracleCommand();
            cmd.CommandText = String.Format("Select E.c_Date, E.c_Time, E.l_UID, E.l_TID from tEnter E where E.c_Date>='{0}' and E.c_Date<='{1}'", sd, ed);

            cmd.CommandType = CommandType.Text;
            cmd.Connection = con;
            OracleDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                if (!reader.HasRows) continue;
                if (reader[2].ToString() == "-1") continue;
            }
            // Close and Dispose OracleConnection object
            con.Close();
            con.Dispose();
            Console.WriteLine("Disconnected");

        }
    }
}
使用系统;
使用系统数据;
使用System.Data.OracleClient//加上这个
名称空间Oracle\u数据库
{
班级计划
{
静态void Main(字符串[]参数)
{
OracleConnection con=新的OracleConnection();
//使用连接字符串属性连接到Oracle数据库
con.ConnectionString=“用户Id=abc;密码=12345;数据源=ORCL”;
con.Open();
DateTime fromDate=DateTime.Now.AddDays(-760);
DateTime toDate=DateTime.Now.AddDays(-760);
字符串sd=fromDate.Year+fromDate.Month.ToString(“00”)+fromDate.Day.ToString(“00”);
字符串ed=toDate.Year+toDate.Month.ToString(“00”)+toDate.Day.ToString(“00”);
var cmd=新的OracleCommand();

cmd.CommandText=String.Format(“从tEnter E中选择E.c_日期、E.c_时间、E.l_UID、E.l_TID,其中E.c_日期>='{0}'和E.c_日期Visual Studio是一个32位应用程序,64位版本不存在。它取决于编译器设置中的目标体系结构是否需要32位或64位Oracle客户端

然后,namespace
System.Data.OracleClient
已存在多年,您不应该使用它。请改用

看看这个答案,我提供了一些细节:

还有一些评论:

使用后应关闭/处置
OracleDataReader

使用绑定变量而不是硬编码字符串:

cmd.CommandText = "Select E.c_Date, E.c_Time, E.l_UID, E.l_TID from tEnter E where E.c_Date>= :sd and E.c_Date<= :ed";
cmd.Parameters.Add("sd", OracleDbType.Date, ParameterDirection.Input).Value = fromDate;
cmd.Parameters.Add("ed", OracleDbType.Date, ParameterDirection.Input).Value = toDate;

cmd.CommandText=“从tEnter E中选择E.c_日期、E.c_时间、E.l_UID、E.l_TID,其中E.c_日期>=:sd和E.c_日期visual studio中针对此项目的平台目标是什么?(configuration manager)