Подключиться к базе данных Oracle в C# без Oracle Client
2. Обзор соединения из C# в Oracle
Во-первых, вам нужно понять принцип соединения с программы C# в Oracle Database.
Модель 1:
В этой модели на компьютере, на котором работает приложение C#, вам необходимо установить OracleClient, это часть Oracle, которая устанавливается в клиенте для поддержки подключения к основной базе данных Oracle. Если база данных Oracle установлена на компьютере, на котором выполняется приложение C#, вам не нужно устанавливать OracleClient так как сама база данных Oracle уже является OracleClient. Объем Oracle-клиента составляет около 50 МБ.

Модель 2:
Модель 2 позволяет напрямую подключаться к Oracle без необходимости установки Oracle Client на компьютер, на котором выполняется приложение C#. Вам нужно скопировать некоторые DLL-библиотеки клиента Oracle и несколько библиотек ODAC XCopy в проект.
И поскольку не используется Oracle Client, нет файла tnsname.ora, содержащего информацию Oracle Database, поэтому Connection String должен содержать параметрыбазы данных, как содержание файла tnsname.ora.
И поскольку не используется Oracle Client, нет файла tnsname.ora, содержащего информацию Oracle Database, поэтому Connection String должен содержать параметрыбазы данных, как содержание файла tnsname.ora.
// Connection String подключается напрямую к Oracle.
string connString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = "
     + host + ")(PORT = " + port + "))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = "
     + sid + ")));Password=" + password + ";User ID=" + user;
3. Скачать библиотеку
Примечание: Вы можете использовать только что скачанную 32-Bit версию (даже если ваша операционная система является 64-Bit), если используете 64-Bit версию, иногда используя C# для подключения к Oracle, может появиться следующая ошибка:An unhandled exception of type 'System.BadImageFormatException' occurred in mscorlib.dll Additional information: Could not load file or assembly 'Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Хотя мой компьютер является операционной системой 64bit, но я буду использовать ODAC32bit, который только что был скачан в предыдущем шаге.
4. Копировать библиотеки в Project
Я создал проект под названием ConnectOracleWithoutClient:

Проект создан:

Извелчь файл zip, который был вами скачан.


Скопируйте следующие файлы:
| Directory | File Copy | 
| <DIR>/instantclient_12_1 | oci.dll | 
| <DIR>/instantclient_12_1 | orannzsbb12.dll | 
| <DIR>/instantclient_12_1 | oraocci12.dll | 
| <DIR>/instantclient_12_1 | oraocci12d.dll | 
| <DIR>/instantclient_12_1 | oraociei12.dll | 
| <DIR>/instantclient_12_1 | oraons.dll | 
| <DIR>/odp.net4/odp.net/bin/4 | Oracle.DataAccess.dll | 
| <DIR>/oramts/bin | oramts.dll | 
| <DIR>/oramts/bin | oramts12.dll | 
| <DIR>/oramts/bin | oramtsus.dll | 
| <DIR>/odp.net4/bin | OraOps12.dll | 
Скопируйте и вставьте файлы непосредственно в ваш проект на VisualStudio:

В Visual Studio, выберите все DLL файлы и настройте им свойства:
- Copy to Output Directory: Copy if newer

Объявите библиотеку, с ссылкой к Oracle.DataAccess.dll.




5. Проверка Подключения
Класс DBOracleUtils имеет утилитарный метод для непосредственного подключения к Oracle.
DBOracleUtils.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;
namespace Tutorial.SqlConn
{
    class DBOracleUtils
    {
        public static OracleConnection 
                       GetDBConnection(string host, int port, String sid, String user, String password)
        {
            Console.WriteLine("Getting Connection ...");
            // 'Connection String' подключается напрямую к Oracle.
            string connString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = "
                 + host + ")(PORT = " + port + "))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = "
                 + sid + ")));Password=" + password + ";User ID=" + user;
            OracleConnection conn = new OracleConnection();
            conn.ConnectionString = connString;
            return conn;
        }
    
    }
}Утилитарный класс с параметрами для подключения к вашей базе данных Oracle:
DBUtils.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;
namespace Tutorial.SqlConn
{
    class DBUtils
    {
        public static OracleConnection GetDBConnection()
        {
            string host = "192.168.205.1";
            int port = 1521;
            string sid = "db12c";
            string user = "simplehr";
            string password = "12345";
            return DBOracleUtils.GetDBConnection(host, port, sid, user, password);
        }
    }
}Test Oracle Connection:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;
using Tutorial.SqlConn;
namespace ConnectOracleWithoutClient
{
    static class Program
    {
        static void Main(string[] args)
        {
            //
            OracleConnection conn = DBUtils.GetDBConnection();
            Console.WriteLine("Get Connection: " + conn);
            try
            {
                conn.Open();
                Console.WriteLine(conn.ConnectionString, "Successful Connection");
            }
            catch (Exception ex)
            {
                Console.WriteLine("## ERROR: " + ex.Message);
                Console.Read();
                return;
            }
            Console.WriteLine("Connection successful!");
            Console.Read();
        }
    }
}Запуск приложения:

Pуководства C#
- Наследование и полиморфизм в C#
- Что мне нужно для начала работы с C#?
- Быстрый обучение C# для начинающих
- Установите Visual Studio 2013 в Windows
- Абстрактный класс и Interface в C#
- Установите Visual Studio 2015 в Windows
- Сжатие и декомпрессия в C#
- Руководство по программированию многопоточности C#
- Руководство C# Delegate и Event
- Установите AnkhSVN в Windows
- Программирование C# для группы использующей Visual Studio и SVN
- Установить .Net Framework
- Access Modifier (Модификатор доступа) в C#
- Руководство C# String и StringBuilder
- Руководство C# Property
- Руководство C# Enum
- Руководство C# Structure
- Руководство C# Generics
- Обработка исключений для C#
- Руководство C# Date Time
- Манипулирование файлами и каталогами в C#
- Руководство CSharp Streams - двоичные потоки в C#
- Руководство Регулярное выражение C#
- Подключиться к базе данных SQL Server в C#
- Работа с базой данных SQL Server на C#
- Подключиться к базе данных MySQL в C#
- Работа с базой данных MySQL на C#
- Подключиться к базе данных Oracle в C# без Oracle Client
- Работа с базой данных Oracle на C#
                Show More
            












