![]() (c)2009-2017 openinfotech.ru |
СУБД HyTech | ||||||||||||||||||||||||||||||||||
Документация htTableCreate - Создать новую таблицуНазначение:Функция служит для создания новой таблицы. Если таблица с заданным именем уже существует, поведение функции зависит от флага TAB_CREATE . Для сброшенного флага операция завершится с ошибкой. Если флаг установлен, функция уничтожит старую таблицу и создаст новую. При создании или открытии СУБД присваивает таблице некий номер - "обработчик". Этот номер будет идентифицировать таблицу при последующих операциях поиска или обработки данных. При создании или открытии таблицы нужно указать флаги доступа, задающие режим использования таблицы (монопольный или совместный), возможность модификации данных и пр. При задании ключа крипто-закрытия выполняется шифрование данных как в постоянной части таблицы, так и журнале изменений. Также шифруется часть ассоциатора, содержащая индексы ключевых полей. При шифровании применятся алгоритм, использующий заданный пароль, что ограничивает доступ к данным лиц, имеющих те же программные средства, но не знающих пароль закрытия. Кроме шифрования данных возможно закрыть доступа к таблице паролем для чтения (поиска) или модификации. Последующие операции чтения (поиска) таблицы возможны только при указании пароля доступа на чтение. А операции модификации - еще и пароля доступа на запись. Прототип:int HTAPI htTableCreate( char far *fpTableName, /* Имя таблицы (можно без расширения) */ LPELEMENT fpElems, /* Описатели элементов таблицы */ int nElemCnt, /* Число описателей элементов */ char far *fpCryptoKey, /* Ключ для крипто-закрытия данных */ char far *fpReadPswd, /* Пароль для доступа на чтение */ char far *fpWritePswd, /* Пароль для доступа на запись */ int nOpenMode, /* Режим открытия (константы TAB_???? ) */ LPTHANDLE fpHandle /* Для приема обработчика таблицы */ ); Параметры:
Результат:
Пример.Создать таблицу из четырех полей с шифрованием данных и свободным доступом на чтение/запись для локального использования. Кроме полей, таблица будет содержать группу (ключ, объединяющий первые два поля) и подстроку (ключ, состоящий из части второго поля). /* При создании таблицы смещение полей рассчитывает СУБД */ /* Длина поля имеет смысл только для символьных полей */ ELEMENT asElem[] = { { 10, 0, EC_FIELD, ET_CHAR, EK_NOTKEY, "Frst_Name" }, { 10, 0, EC_FIELD, ET_CHAR, EK_NOTKEY, "Scnd_Name" }, { 0, 0, EC_FIELD, ET_BYTE, EK_NOTKEY, "Sex" }, { 0, 0, EC_FIELD, ET_WORD, EK_NOTKEY, "Salary" }, /* Группа, включающая первое и второе имя, образующая ключ */ { 2, 1, EC_GROUP, ET_CHAR, EK_COMMON, "Name" }, /* Подстрока от второго имени, состоящая из первых пяти символов */ { 1, 2, EC_SUBSTR, 5, EK_COMMON, "Substr" } }; THANDLE hNew; int rc; rc = htTableCreate( "staff", asElem, sizeof(asElem) / sizeof(ELEMENT), "password", NULL, NULL, TAB_PRIVATE, &hNew ); if( rc < 0 ) /* Обработка ошибок */
|