| Компилятор, совместимый с языками семейства xBase и Clipper | ||
|---|---|---|
| Пред. | Глава 13. Работа с SQL серверами | След. |
Ниже описываются особенности использования различных СУБД с CLIP.
Для построения приложения использующего базу данных MySQL должны быть установлены соответствующие пакеты. Это пакет разработчика MySQL и пакет clip-mysql. См. подробности в главе Установка CLIP.
Чтобы скомпоновать приложение с драйвером MySQL необходимо добавить -lclip-mysql в конец команды компиляции clip:
$clip -e test.prg -lclip-mysql
Для подключения к серверу MySQL используется следующий синтаксис ConnectNew():
ConnectNew("MS",[<cHost>],[<cPort>],[<cLogin>],[<cPassword>],[<cDB>],;
[<cSocket>],[<cFlags>],[<cCharset>],[<cIsolation>])где
"MS" - идентификатор драйвера MySQL; см. также описание функции SQLList()
cHost - строка, содержащая имя хоста сервера MySQL
cPort - номер порта сервера в виде строки
cLogin - строка, содержащая логин пользователя
cPassword - строка, содержащая пароль пользователя
cDB - строка, содержащая имя базы данных
cSocket - строка, содержащая имя UNIX socket или pipe, используемого в качестве транспорта
cFlags - флаги соединения в виде строки; см. руководство по MySQL
cCharset - кодировка, используемая сервером; если NIL, используется SET("SQL_CHARSET")
cIsolation - строка, содержащая имя уровня изоляции, используемого по умолчанию (см. подробности в руководстве по MySQL); если NIL, используется SET("MS_ISOLATION_LEVEL"); возможны следующие значения:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
эти же значения могут использоваться в качестве значений параметра <cIsolation> метода TRowset:Start().
Для связывания строк набора и записей базы данных используется поле AUTO_INCREMENT (см. описание оператора CREATE TABLE в руководстве по MySQL). См. также описание конструктора TRowset TConnect:CreateRowset().
В следующей таблице представлены реализованные типы данных MySQL и их XBase-эквиваленты.
Таблица 13-1. Реализованные типы данных MySQL
| Тип данных MySQL | Тип данных CLIP |
|---|---|
| DECIMAL | NUMERIC |
| TINY | NUMERIC |
| SHORT | NUMERIC |
| LONG | NUMERIC |
| FLOAT | NUMERIC |
| DOUBLE | NUMERIC |
| LONGLONG | NUMERIC |
| INT24 | NUMERIC |
| TIMESTAMP | DATE |
| DATE | DATE |
| TIME | ARRAY {h,m,s}; h,m,s - NUMERIC |
| DATETIME | DATE |
| YEAR | NUMERIC |
| ENUM | CHARACTER |
| SET | CHARACTER |
| TINY_BLOB | CHARACTER |
| MEDIUM_BLOB | CHARACTER |
| LONG_BLOB | CHARACTER |
| BLOB | CHARACTER |
| VAR_STRING | CHARACTER |
| STRING | CHARACTER |
Для построения приложения использующего базу данных PostgreSQL должны быть установлены соответствующие пакеты. Это пакет разработчика PostgreSQL и пакет clip-postgres. См. подробности в главе Установка CLIP.
Чтобы скомпоновать приложение с драйвером PostgreSQL необходимо добавить -lclip-postgres в конец команды компиляции clip:
$clip -e test.prg -lclip-postgres
Для подключения к серверу PostgreSQL используется следующий синтаксис ConnectNew():
ConnectNew("PG",[<cHost>],[<cPort>],[<cLogin>],[<cPassword>],[<cDB>],;
[<cTTY>],[<cOptions>],[<cCharset>],[<cIsolation>])где
"PG" - идентификатор драйвера PostgreSQL; см. также описание функции SQLList()
cHost - строка, содержащая имя хоста сервера PostgreSQL
cPort - номер порта сервера в виде строки
cLogin - строка, содержащая логин пользователя
cPassword - строка, содержащая пароль пользователя
cDB - строка, содержащая имя базы данных
cTTY - терминал для вывода отладочной информации
cOptions - дополнительные параметры соединения; см. руководство по PostgreSQL
cCharset - кодировка, используемая сервером; если NIL, используется SET("SQL_CHARSET")
cIsolation - строка, содержащая имя уровня изоляции, используемого по умолчанию (см. подробности в руководстве по PostgreSQL); если NIL, используется SET("PG_ISOLATION_LEVEL"); возможны следующие значения:
READ COMMITTED
SERIALIZABLE
эти же значения могут использоваться в качестве значений параметра <cIsolation> метода TRowset:Start().
Для связывания строк набора и записей базы данных используется поле oid. См. руководство по PostgreSQL и описание конструктора TRowset TConnect:CreateRowset().
В следующей таблице представлены реализованные типы данных PostgreSQL и их XBase-эквиваленты.
Таблица 13-2. Реализованные типы данных PostgreSQL
| Тип данных PostgreSQL | Тип данных CLIP |
|---|---|
| DECIMAL | NUMERIC |
| ABSTIME | DATE |
| BOOL | LOGICAL |
| BOX | ARRAY {{x1,y1},{x2,y2}}; x1,y1,x2,y2 - NUMERIC |
| BPCHAR | CHARACTER |
| BYTEA | CHARACTER |
| CHAR | CHARACTER |
| CID | NUMERIC |
| CIDR | ARRAY {x1,...}; x1,... - NUMERIC |
| CIRCLE | ARRAY {x1,x2,x3}; x1,x2,x3 - NUMERIC |
| DATE | DATE |
| FILENAME | CHARACTER |
| FLOAT4 | NUMERIC |
| FLOAT8 | NUMERIC |
| INET | ARRAY {x1,x2,x3,x4,x5}; x1,x2,x3,x4,x5 - NUMERIC |
| INT2 | NUMERIC |
| INT28 | ARRAY {x1,x2,...,x8}; x1,x2,...,x8 - NUMERIC |
| INT4 | NUMERIC |
| LSEG | ARRAY {{x1,y1},{x2,y2}}; x1,y1,x2,y2 - NUMERIC |
| MONEY | NUMERIC |
| NAME | CHARACTER |
| NUMERIC | NUMERIC |
| OID | NUMERIC |
| OID8 | ARRAY {x1,x2,...,x8}; x1,x2,...,x8 - NUMERIC |
| PATH | CHARACTER |
| POINT | ARRAY {x,y}; x,y - NUMERIC |
| POLYGON | ARRAY {{x1,y1},...{xn,yn}}; x1..xn, y1...yn - NUMERIC |
| RELTIME | NUMERIC |
| TEXT | CHARACTER |
| TIMESTAMP | DATE |
| VARCHAR | CHARACTER |
| XID | NUMERIC |
Для построения приложения использующего базу данных Oracle должны быть установлены соответствующие пакеты. Это файлы разработчика Oracle и пакет clip-oracle. См. подробности в главе Установка CLIP.
Чтобы скомпоновать приложение с драйвером Oracle необходимо добавить -lclip-oracle в конец команды компиляции clip:
$clip -e test.prg -lclip-oracle
Для подключения к серверу Oracle используется следующий синтаксис ConnectNew():
ConnectNew("OR",NIL,NIL,<cLogin>,<cPassword>,[<cDB>],NIL,NIL,[<cCharset>],[<cIsolation>])где
"OR" - идентификатор драйвера Oracle; см. также описание функции SQLList()
cLogin - строка, содержащая логин пользователя
cPassword - строка, содержащая пароль пользователя
cDB - строка, содержащая имя базы данных (connect string)
cCharset - кодировка, используемая сервером; если NIL, используется SET("SQL_CHARSET")
cIsolation - строка, содержащая имя уровня изоляции, используемого по умолчанию (см. подробности в руководстве по Oracle); если NIL, используется SET("OR_ISOLATION_LEVEL"); возможны следующие значения:
READ COMMITTED
SERIALIZABLE
READ ONLY
READ WRITE
эти же значения могут использоваться в качестве значений параметра <cIsolation> метода TRowset:Start().
Для связывания строк набора и записей базы данных используется поле rowid (см. руководство по Oracle). См. также описание конструктора TRowset TConnect:CreateRowset() .
Массив параметров SQL (используемый в качестве значения параметра <aParameters> методов TConnect:Command() иTConnect:CreateRowset()) должен содержать третий элемент (тип данных Oracle) в каждой строке. Типы данных Oracle определены в файле oracle.ch. Например:
#include "oracle.ch"
// ...
conn:Command("INSERT INTO mytable (fname,lname) VALUES (:fname,:lname)",;
{{"fname","John",ORT_VARCHAR2},{"lname","Smith",ORT_VARCHAR2}})Оператор INSERT, содержащийся в параметре <cInsertSQL> конструктора TRowset TConnect:CreateRowset(), должен содержать предложение RETURNING rowid. Например:
INSERT INTO mytable (fname,lname) VALUES (:fname,:lname) RETURNING rowid INTO :rowid
В следующей таблице представлены реализованные типы данных Oracle и их XBase-эквиваленты.
Таблица 13-3. Реализованные типы данных Oracle
| Тип данных Oracle | Тип данных CLIP |
|---|---|
| VARCHAR2 | CHARACTER |
| CHAR | CHARACTER |
| RAW | CHARACTER |
| NUMBER | NUMERIC |
| INTEGER | NUMERIC |
| FLOAT | NUMERIC |
| LONG | CHARACTER |
| LONG VARCHAR | CHARACTER |
| LONG RAW | CHARACTER |
| DATE | DATE |
| CLOB | CHARACTER |
| BLOB | CHARACTER |
| FILE | CHARACTER |
Для построения приложения использующего базу данных Interbase должны быть установлены соответствующие пакеты. Это файлы разработчика Interbase и пакет clip-interbase. См. подробности в главе Установка CLIP.
Чтобы скомпоновать приложение с драйвером Interbase необходимо добавить -lclip-interbase в конец команды компиляции clip:
$clip -e test.prg -lclip-interbase
Для подключения к серверу Interbase используется следующий синтаксис ConnectNew():
ConnectNew("IB",NIL,NIL,<cLogin>,<cPassword>,<cDB>,NIL,NIL,[<cCharset>],[<cIsolation>])где
"IB" - идентификатор драйвера Interbase; см. также описание функции SQLList()
cLogin - строка, содержащая логин пользователя
cPassword - строка, содержащая пароль пользователя
cDB - строка, содержащая имя базы данных (имя файла)
cCharset - кодировка, используемая сервером; если NIL, используется SET("SQL_CHARSET")
cIsolation - строка, содержащая имя уровня изоляции, используемого по умолчанию (см. подробности в руководстве по Interbase); если NIL, используется SET("IB_ISOLATION_LEVEL"); возможны следующие значения:
CONCURRENCY
READ COMMITTED or READ_COMMITTED
REC VERSION or REC_VERSION
NO REC VERSION or NO_REC_VERSION
CONSISTENCY
WAIT
NOWAIT
READ
WRITE
эти же значения могут использоваться в качестве значений параметра <cIsolation> метода TRowset:Start().
Для связывания строк набора и записей базы данных используется поле, чье имя передается конструктору TRowset в параметре <cIdName>. См. описание TConnect:CreateRowset().
При использовании драйвера Interbase метод TConnect:Start() может получать второй параметр <cLockTables>, в котором описывается какие таблицы и как должны быть заблокированы на время транзакции. Строка, содержащаяся в <cLockTables> должна иметь следующий формат:
<table_name>=<lock_type>[;<table_name>=<lock_type>,...]
где <table_name> - имя таблицы; <lock_type> - тип блокировки; возможны следующие значения:
SHARED_READ
SHARED_WRITE
PROTECTED_READ
PROTECTED_WRITE
См. подробности в руководстве по Interbase.
В следующей таблице представлены реализованные типы данных Interbase и их XBase-эквиваленты.
Таблица 13-4. Реализованные типы данных Interbase
| Тип данных Interbase | Тип данных CLIP |
|---|---|
| ARRAY | ARRAY |
| BLOB | CHARACTER |
| CHAR | CHARACTER |
| DATE | DATE |
| DECIMAL | NUMERIC |
| DOUBLE PRECISON | NUMERIC |
| INTEGER | NUMERIC |
| FLOAT | NUMERIC |
| NUMERIC | NUMERIC |
| SMALLINT | NUMERIC |
| TIME | DATETIME |
| TIMESTAMP | DATETIME |
| VARCHAR | CHARACTER |
Для построения приложения использующего ODBC должны быть установлены соответствующие пакеты. Это пакет разработчика ODBC (iODBC2 или unixodbc) и пакет clip-odbc. См. подробности в главе Установка CLIP.
Чтобы скомпоновать приложение с драйвером ODBC необходимо добавить -lclip-odbc в конец команды компиляции clip:
$clip -e test.prg -lclip-odbc
Для подключения к базе данных через ODBC используется следующий синтаксис ConnectNew():
ConnectNew("ODBC",<cDSN>,[<cLogin>],[<cPassword>],NIL,NIL,NIL,NIL,[<cCharset>])где
"ODBC" - идентификатор драйвера ODBC; см. также описание функции SQLList()
cDSN - строка, содержащая имя источника данных (см. руководство по ODBC и файл odbc.ini)
cLogin - строка, содержащая логин пользователя
cPassword - строка, содержащая пароль пользователя
cCharset - кодировка, используемая сервером; если NIL, используется SET("SQL_CHARSET")
Для связывания строк набора и записей базы данных используется поле, чье имя передается конструктору TRowset в параметре <cIdName>. См. описание TConnect:CreateRowset().
При использовании ODBC нужный уровень изоляции должен устанавливаться вручную. Параметры метода TConnect:Start() игнорируются.
В следующей таблице представлены реализованные типы данных ODBCи их XBase-эквиваленты.
Таблица 13-5. Реализованные типы данных ODBC
| Тип данных ODBC | Тип данных CLIP |
|---|---|
| TINYINT | NUMERIC |
| SMALLINT | NUMERIC |
| INTEGER | NUMERIC |
| BIGINT | NUMERIC |
| DECIMAL | NUMERIC |
| DOUBLE | NUMERIC |
| NUMERIC | NUMERIC |
| FLOAT | NUMERIC |
| REAL | NUMERIC |
| CHAR | CHARACTER |
| VARCHAR | CHARACTER |
| LONGVARCHAR | CHARACTER |
| DATE | DATE |
| TIME | ARRAY {h,m,s}; h,m,s - NUMERIC |
| TIMESTAMP | DATETIME |
| LONGVARBINARY | CHARARCTER |
Для построения приложения использующего DBTCP должны быть установлены соответствующие пакеты. Это пакет разработчика DBTCP и пакет clip-dbtcp. См. подробности в главе Установка CLIP.
Чтобы скомпоновать приложение с драйвером DBTCP необходимо добавить -lclip-dbtcp в конец команды компиляции clip:
$clip -e test.prg -lclip-dbtcp
Для подключения к базе данных через DBTCP используется следующий синтаксис ConnectNew():
ConnectNew("DBTCP",[<cHost>],[<cPort>],[<cLogin>],[<cPassword>],<cDSN>,NIL,NIL,[<cCharset>])где
"DBTCP" - идентификатор драйвера DBTCP; см. также описание функции SQLList()
cHost - строка, содержащая имя хоста на котором работает сервер DBTCP
cPort - номер порта сервера в виде строки
cLogin - строка, содержащая логин пользователя
cPassword - строка, содержащая пароль пользователя
cDSN - строка, содержащая имя источника данных
cCharset - кодировка, используемая сервером; если NIL, используется SET("SQL_CHARSET")
Для связывания строк набора и записей базы данных используется поле, чье имя передается конструктору TRowset в параметре <cIdName>. См. описание TConnect:CreateRowset().
При использовании DBTCP нужный уровень изоляции должен устанавливаться вручную. Параметры метода TConnect:Start() игнорируются.
| Пред. | Начало | След. |
| Описание API SQL | Уровень выше | Работа с сокетами |