Подключитесь к Oracle с помощью odp.net и OCI из C # - PullRequest
2 голосов
/ 13 апреля 2011

Я читал о том, как подключиться к моей базе данных oracle из моего приложения на C # win, но я продолжаю «бить стену». Я решил использовать odp.net и OCI, чтобы клиентскому компьютеру не требовалось устанавливать клиента, но я не могу заставить его работать.

У меня есть небольшое тестовое приложение, код, который я показал ниже, и в свое решение я добавил следующие dll из oCI oracle: oci.dll, orannzsbb11.dll и oraociicus11.dll. Все они помещаются вместе с окончательным файлом .exe.

Тестовый код:

private static string CONNECTION_STRING =
                  "User Id=hr;Password=hr;Data Source=(DESCRIPTION=" +
                  "(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))" +
                  "(CONNECT_DATA=(SID=XE)));Connect Timeout=15;";

        static void Main(string[] args)
        {
            try
            {
                using (var conn = new OracleConnection(CONNECTION_STRING))
                {
                    conn.Open();
                    Console.WriteLine("Connection is: {0}", conn.State.ToString());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

Проблема возникает уже в операторе using (…), программа просто перестает работать, и я не получаю ответа. Какую магию мне нужно сделать, чтобы заставить работать OCI ???

Ответы [ 3 ]

1 голос
/ 13 апреля 2011

Чтобы иметь возможность использовать ODP.NET без установки полноценного клиента, вам необходимо использовать пакеты Oracle Instant Client (вы не можете просто скопировать библиотеки из полного клиента):

  • Проверьте здесь для описания требований.
  • Начиная с Oracle v10, я настоятельно рекомендую использовать EZCONNECT , чтобы упростить строку подключения. Как насчет этого:

    private const string CONNECTION_STRING="User Id=hr;Password=hr;"+
       +"Data Source=127.0.0.1:1521/XE;Connect Timeout=15;";
    
0 голосов
/ 13 апреля 2011

Прочтите инструкции по установке от Oracle для ODAC, найденные здесь . Здесь также обсуждаются общие проблемы настройки.

Вам также необходимо включить ссылку на Oracle.DataAccess в ваше решение и «использование Oracle.DataAccess.Client;» Для вашего подключения вы можете использовать Oracle SID, который можно разрешить с помощью файла tnsnames (попробуйте tnsping из командной строки cmd).

0 голосов
/ 13 апреля 2011

Обычно при использовании OCI или продуктов баз данных Oracle в целом, переменная среды ORACLE_HOME должна быть определена и указывает на вашу установку Oracle. Рядом с библиотеками Oracle использует некоторые другие файлы поддержки и ищет их в ORACLE_HOME. Обычно LD_LIBRARY_PATH определяется как ORACLE_HOME / lib. Попробуйте использовать Instant Client , который, скорее всего, лучше, чем выбор нескольких рук. Хорошая статья о том, как заставить его работать, находится здесь: Установка Oracle InstantClient Basic и InstantClient sqlplus на win32 Вы можете пропустить часть о sqlplus.

А со страницы экземпляр-клиент на otn:

Мгновенная загрузка клиента Обратите внимание, что Instant Client предоставляется в рамках отдельной лицензии на разработку и распространение OTN для Instant Client, которая позволяет большинству лицензиатов бесплатно загружать, распространять и развертывать в производственных средах. Пожалуйста, проконсультируйтесь с лицензией и вашим юридическим отделом для уточнения, если это необходимо. Для получения дополнительной информации о Instant Client см. Официальный сайт Instant Client.

Похоже, вам разрешено распространять экземпляр-клиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...