Подключение к Oracle Failing =>. Net - PullRequest
0 голосов
/ 04 марта 2020

Я начинаю разработку. NET Я уже установил ссылки в своем проекте, которые описаны ниже.

  • Oracle .DataAccess
  • System.Data. OracleClient

Код такой:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
using Oracle.DataAccess.Types;

namespace testingconnection
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //string oradb = "Data Source=ORCL;User Id=hr;Password=hr;";
            string oradb = "DATA SOURCE=BLANK;USER ID=USER;Password=password";
            OracleConnection conn = new OracleConnection(oradb);  // C#
            conn.Open();
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select DESCRIPTION from ncr where ncr_no ='60'";
            cmd.CommandType = CommandType.Text;
            OracleDataReader dr = cmd.ExecuteReader();
            dr.Read();
            label1.Text = dr.GetString(0);
            conn.Dispose();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }
    }
}

Ошибки:

  • $ исключение {"Не удалось загрузить файл или сборку ' Oracle .DataAccess, версия = 2.122.1.0, культура = нейтральная, PublicKeyToken = 89b483f429c47342 'или одна из ее зависимостей. Была предпринята попытка загрузить программу с неверным форматом. "} System.BadImageFormatException o

Подробнее

См. Конец этого сообщения для получения подробной информации о вызове отладки по времени (JIT) вместо этого диалогового окна.

**** ********** Exception Text **************

System.BadImageFormatException: Could not load file or assembly 'Oracle.DataAccess, Version=2.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load a program with an incorrect format.
File name: 'Oracle.DataAccess, Version=2.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342'
   at testingconnection.Form1.button1_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].



************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3416.0 built by: NET472REL1LAST_B
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
testingconnection
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/jlsanche/source/repos/testingconnection/testingconnection/bin/Debug/testingconnection.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3324.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3451.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3221.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3324.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3429.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3221.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

У меня была проблема, похожая на эту, когда пакет вызывал 64-битные зависимости, в то время как моя программа была для 32. Я действительно не могу понять, какой у вас пакет EXACT DataAccess, но проблема была в том, что Orcale дает то же самое число оборотов для пакетов 32 и 64, так что я получил неправильное сочетание файлов, то, что я должен был сделать в то время, это 1. Удалите пакет DataAcess, который у меня был. 2. Установите Orcale dataAcess 32-bit с веб-сайта Orcale, поскольку 64-битный по-прежнему имеет тот же номер оборота, что сбивает с толку. Отсюда

0 голосов
/ 04 марта 2020

Сообщение об ошибке заключается в том, что Visual Studio не может найти Oracle dll. Это может быть очень неприятно, поэтому попробуйте эти базовые c проверки

  • Проверьте, что ваши ссылки на тот же номер версии, что вы установили. Маловероятно, но все же возможно
  • Убедитесь, что oracle dll находится в вашей папке bin. Опять же, маловероятно, но возможно
  • проверьте oracle dll в глобальном кэше сборок или скопируйте его туда, смотрите здесь
  • , если это не сработает, попробуйте установить dll Свойства проекта для "Copy Local" см. здесь . Затем пересоберите ваш проект и убедитесь, что dll находится в папке bin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...