пятница, 21 апреля 2017 г.

Delphi Oracle через ODBC


Для доступа к Oracle через ODBC с помощью ADO(dbGO) компонентов необходимо установить Instant Client вот ссылка на них http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html.
1.Скачиваем Basic, SQL*Plus и ODBC.
2.Далее складываем все в одну папку и там разархивируем. Например в эту d:\OracleInstantClient\instantclient_12_2.
3.Зададим переменные среды ORACLE_HOME=d:\OracleInstantClient\instantclient_12_2, SQL_PATH=d:\OracleInstantClient\instantclient_12_2, TNS_ADMIN=d:\OracleInstantClient\instantclient_12_2 и в переменную Path добавим d:\OracleInstantClient\instantclient_12_2. Для редактирования переменных можно воспользоваться https://patheditor2.codeplex.com/
4.Запустим установщик драйверов ODBC odbc_install.exe.
5.Теперь создадим файл tnsnames.ora в папке d:\OracleInstantClient\instantclient_12_2 и пропишем в нем нашу БД
TESTDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS =
          (PROTOCOL = TCP)
          (Host = ...)
          (Port = 1521)
        )
    )
    (CONNECT_DATA = (SID = ...)
    )
  )
Точки меняем на IP и название экземпляра.
6.Зайдем в Панель управления - Администрирование - Источники данных (ODBC) и на вкладке Системный DNS добавим наш источник. Выбираем драйвер Oracle in instantclient_12_2, указываем Data Source Name = TESTDB, из выпадающего списка TNS Service Name выберем TESTDB, введем User ID для базы данных и проверим соединение.
7.Теперь перейдём к настройка в Delphi строка подключения равна "Provider=MSDASQL.1;Password=gid;Persist Security Info=True;User ID=kin_samng;Data Source=TESTDB"  Подробнее про строки подключения https://www.connectionstrings.com/oracle/
8.Настройка поддержки кириллицы. Для этого в реестре в HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE нужно сделать ключ nls_lang=RUSSIAN_CIS.CL8MSWIN1251

Могут возникнуть проблемы с 32 разрядным приложением в 64 разрядной системе.
[Microsoft][Диспетчер драйверов ODBC] В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.
В таком случае устанавливаем 32-х разрядный драйвер, и прописываем ODBC не в Панели управления, а через %windir%\system32\odbcad32.exe от сюда http://artubuntu.livejournal.com/23125.html

Комментариев нет:

Отправить комментарий