Создание соединения с помощью конфигурации соединения – LINTER_ConnectEnvEx/ LINTER_ConnectEnv

Прототипы функций
   
L_LONG LINTER_ConnectEnvEx(
 L_CHAR *sCfgName,      /* имя конфигурации соединения */
 L_SWORD swCfgNameLen,  /* длина имени конфигурации соединения */
 L_LONG *plMode,        /* режим работы создаваемого соединения */
 L_WORD pwConnectionId, /* идентификатор созданного соединения */
 L_LONG *plApiError,    /* код завершения LinAPI */
 L_LONG *plLinError,    /* код завершения СУБД ЛИНТЕР */
 L_LONG *plSysError);   /* код завершения ОС */

Устаревший вариант:

L_LONG LINTER_ConnectEnv(
 L_CHAR *sCfgName,      /* имя конфигурации соединения */
 L_SWORD swCfgNameLen,  /* длина имени конфигурации соединения */
 L_LONG *plMode,        /* режим работы создаваемого соединения */
 L_WORD pwConnectionId);/* идентификатор созданного соединения */
Входные параметры
Параметр Описание
sCfgName  Имя конфигурации соединения. Если аргумент не задан, по умолчанию используется имя LINTER
swCfgNameLen  Длина имени конфигурации соединения (максимально допустимая длина 58 символов). Если строка sCfgName ограничена символом '\0', то можно указать нулевое значение длины
plMode  Режим работы создаваемого соединения
pwConnectionId  Идентификатор соединения

Режимы работы создаваемого соединения (определены в заголовочном файле linapi.h):

  • mAutocommit – режим транзакций AUTOCOMMIT;

  • mOptimistic – режим транзакций OPTIMISTIC;

    Примечание

    Режим OPTIMISTIC устарел (использовать не рекомендуется).

Выходные параметры
Параметр Описание
pwConnectionId  Идентификатор созданного соединения
plMode  Установленный режим соединения
plApiError  Код завершения LinAPI-интерфейса
plLinError  Код завершения СУБД ЛИНТЕР
plSysError  Код завершения ОС
Описание

Функция предназначена для создания соединения с ЛИНТЕР-сервером на основе определяемой клиентским приложением конфигурации соединения.

Клиентское приложение может содержать любое количество конфигураций соединения и использовать их в соответствии со своей логикой работы (например, в случае отказа в доступе к локальному ЛИНТЕР-серверу попытаться установить соединение с удаленным ЛИНТЕР-сервером).

Для идентификации используемой при создании соединения конфигурации соединения используется имя конфигурации, которое задается в аргументе sCfgName данной функции.

Для каждой конфигурации соединения в ОС должны быть созданы две переменных окружения, определяющие следующие значения:

  • вид создаваемого соединения (локальное или сетевое);

  • спецификацию файла с параметрами создаваемого соединения

Формат переменной окружения, задающей вид создаваемого соединения:

CONNECT< подчёркивание >< имя конфигурации соединения >=< значение переменной CONNECT >

< имя конфигурации соединения >::= < значение параметра sCfgName >

< значение переменной CONNECT >::= < локальное соединение > | < сетевое соединение >

< локальное соединение >::=1:< значение LINTER_MBX >

< сетевое соединение >::=2:< имя ЛИНТЕР-сервера >

Примечание

Если переменная окружения CONNECT_" + sCfgName задает локальное соединение, то функция должна использоваться только в том случае, если у клиентского приложения нет других локальных соединений.

< значение LINTER_MBX >:= идентификатор межзадачного обмена (см. документ «СУБД ЛИНТЕР. Сетевые средства», раздел «Управление сетевым доступом»)

< имя ЛИНТЕР-сервера >::= имя узла локальной сети из файла сетевой конфигурации nodetab (см. документ «СУБД ЛИНТЕР. Сетевые средства», раздел «Файл сетевой конфигурации»)

Примеры
CONNECT_DEMO=1:30000
CONNECT_NETDEMO=2:NODE1

Формат переменной окружения, задающей параметры создаваемого соединения:

CFG< подчёркивание >< имя конфигурации соединения >=< значение переменной CFG >

< значение переменной CFG >::=< спецификация файла >

< спецификация файла >::= путь и имя текстового файла с параметрами соединения

Формат текстового файла с параметрами соединения. Текстовый файл состоит из строк следующего формата:

< строка >::= < имя параметра >=< значение параметра >

< имя параметра >::= USER | PASSWORD | CODEPAGE | CONCURRENCY

Имена параметров регистронезависимы.

< значение параметра >:

  1. USER – имя пользователя БД (строка длиной до 66 символов)

  2. PASSWORD – пароль пользователя БД (строка длиной до 18 символов)

  3. CODEPAGE – имя кодировки соединения (символьная строка)

  4. CONCURRENCY – режим транзакций соединения (одно или несколько значений (с учётом регистра!)):

    • mAutocommit;

    • mOptimistic;

      Примечание

      Режим mOptimistic устарел (использовать не рекомендуется).

    • mExclusive.

Если значения в файле не заданы, то для параметров USER, PASSWORD, CODEPAGE будет устанавливаться пустая строка, а для параметра CONCURRENCY – значение 0 (соответствует mAutocommit).

Если один и тот же параметр задан несколько раз, используется последнее значение параметра.

Разделитель между значениями может быть произвольным строковым символом – пробелом, запятой и т.д.

Примеры
Переменные среды окружения (предполагается, что БД запущена локально с LINTER_MBX=20561):
CONNECT_LINTER=1:20561
CFG_LINTER=config.lin

Файл config.lin:
USER=SYSTEM
PASSWORD=MANAGER8
CODEPAGE=CP1251
CONCURRENCY=mExclusive

После обработки конфигурации соединения происходит вызов функции LINTER_ConnectCSEx с извлеченными параметрами из конфигурации соединения.

Функция LINTER_ConnectEnvEx возвращает коды завершения в выходных параметрах, а для получения кодов завершения функции LINTER_ConnectEnv необходимо после её выполнения вызывать дополнительно функцию LINTER_GetError.

Пример

1) Создание и настройка конфигурации локального соединения с именем LOCAL_DB (с LINTER_MBX=3000):

  • создание файла параметров соединения param_local.lin:

    USER=USER1
    PASSWORD=12345
    CODEPAGE=CP1251
    CONCURRENCY=mAutocommit
  • создание и установка переменных окружения:

    SET CONNECT_LOCAL_DB = 1:3000
    SET CFG_LOCAL_DB=param_local.lin (файл будет взят из каталога запуска клиентского приложения)

2) Создание и настройка конфигурации удаленного соединения с именем REMOTE_DB (имя сервера NODE1):

  • создание файла параметров соединения param_remote.lin:

    USER=USER1
    PASSWORD=12345
    CODEPAGE=CP1251
    CONCURRENCY=mAutocommit
  • создание и установка переменных окружения:

    SET CONNECT_REMOTE_DB  =2:NODE1
    SET CFG_REMOTE_DB=c:\linter\param_remote.lin

3) Вызов функции

long lError, lTransactionMode;
short nConnID;
...
If (lError =LINTER_ConnectEnv("LOCAL_DB", 0, &lTransactionMode, &nConnID))
	Processing_error(lError, nConnID, 0, 0, "LINTER_local_Connect");
...
If (lError =LINTER_ConnectEnv("REMOTE_DB", 0, &lTransactionMode, &nConnID))
	Processing_error(lError, nConnID, 0, 0,	"LINTER_remote_Connect");