СУБД Interbase (Firebird)


Чтобы построить приложение с использованием DBFSQL для Interbase его нужно слинковать с библиотекой libclip-interbase.so

Для подключения к серверу используйте конструктор класса TConnect в следующем синтаксисе:

ConnectNew("IB",NIL,NIL,<login>,<pwd>,[<dbname>], NIL,NIL,NIL,[<cIsolation>]), где

"IB" - строка, идентифицирующая СУБД Interbase;

<login> - логин пользователя;

<pwd> - пароль пользователя;

<dbname> - имя базы данных;

<cIsolation> - уровень изоляции по умолчанию.

Для указания поля-идентификатора записи для связи набора записей TRowset с физической таблицей базы данных в функции TConnect:CreateRowset() предусмотрен параметр <idname>. Для полноценной работы с набором (с возможностью отражения производимых изменений набора записей в базе данных) в список запрашиваемых полей запроса SELECT следует явно включать зто поле.

Кроме того, в функции TConnect:CreateRowset() предусмотрен параметр <gen_idSQL> с запросом к генератору уникальных идентификаторов СУБД Interbase. Это необходимо в случаях, когда вновь добавляемые при помощи TRowset:Append() и TRowset:insertSQL записи предполагается редактировать. В этом случае не следует делать триггер BEFORE INSERT.

Значения параметра <cIsolation> для ConnectNew() и TConnect:Start() могут состоять из одной или нескольких из нижеследующих строк, разделенных символом ';':

"CONCURRENCY"
"READ COMMITTED" или "READ_COMMITTED"
"REC VERSION" или "REC_VERSION"
"NO REC VERSION" или "NO_REC_VERSION"
"CONSISTENCY"
"WAIT"
"NOWAIT"
"READ"
"WRITE"

(Об уровнях изоляции и параметрах транзакций читайте документацию по Interbase).

Кроме того, функция TConnect:Start() может принимать второй параметр-строку с параметрами блокировки отдельных таблиц. Эта строка должна иметь вид:

<table_name>=<lock_type>[;<table_name>=<lock_type>,...], где
<table_name> - имя таблицы которую нужно заблокировать на время транзакции;
<lock_type> - тип блокировки; возможны следующие типы:

"SHARED_READ"
"SHARED_WRITE"
"PROTECTED_READ"
"PROTECTED_WRITE"

Например:

// начать транзакцию с уровнем изоляции READ COMMITTED,
// только для чтения,
// с блокировкой таблицы MYTABLE
conn:Start("READ COMMITTED;READ ONLY","MYTABLE=PROTECTED_WRITE")