首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BadImageFormatException of .net oracle provider

BadImageFormatException of .net oracle provider
EN

Stack Overflow用户
提问于 2016-05-08 13:13:35
回答 1查看 1.9K关注 0票数 0

我正在使用2012 (64位)和oracle 11g (64位)。当我去连接oracle数据库时,会发生以下错误。

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

我花了很多时间来解决这个问题。但并没有那么做。

示例代码

代码语言:javascript
复制
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");

        }
    }
}

你能帮我一下吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-08 17:12:21

Visual是一个32位的应用程序,不存在64位版本.它取决于编译器设置中的目标体系结构,如果您需要32或64位Oracle客户端的话。

那么,命名空间System.Data.OracleClient多年来都是已弃用,您不应该使用它。使用Oracle的驱动程序代替。

看看这个答案,我提供了一些细节:提供程序与Oracle客户端的版本不兼容

还有一些评论:

您应该在使用OracleDataReader之后关闭/释放它。

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

代码语言:javascript
复制
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;

然后,您也不必关心任何ToString()方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37100242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档