Основы Control-ADO

Настоящая реализация основана на версии 2.6 интерфейса ADO и требует установки компонентов ADO (которые содержатся в пакете установки программы «КАСКАД Цифра»). При работе с Linux, библиотека Qt автоматически устанавливается при начальной установке. Это обеспечивает доступ как к локальным источникам данных, так и к источникам данных в сети.

Так как интерфейсы ADO или ODBC могут существенно отличаться, в зависимости от реализации (в зависимости от методов, которые фактически реализуются), имеет смысл проверять возможности интерфейса в отношении используемых источников данных до установки приложения. Так, например, использование транзакций, параллельное считывание и изменение наборов записей, а также обратное считывание наборов записей доступно не для каждого источника данных.

ПРИМЕЧАНИЕ

Доступ с несколькими параллельными подключениями при использовании ADO с помощью программы MS Access может вызвать проблемы с транзакциями (т.е. не работает изолированность транзакции для каждого соединения).

«CtrlADO» — Конфигурационная запись

Чтобы использовать интерфейсы при работе с Windows и Linux соответственно, необходимо создать следующую запись в [ctrl] разделе файла config.level :

[ctrl]

CtrlDLL = «CtrlADO»

Если она также используется в интерфейсе пользователя, то запись необходимо создать и в разделе [ui].

ПРИМЕЧАНИЕ

Необходимо установить на компьютере пакет unixODBC, чтобы использовать драйвер ODBC при работе с Linux. См. www.unixodbc.org.

Типы данных

В программе CTRL реализуются следующие типы данных, необходимые для переменных доступа:

  • dbConnection
  • dbCommand
  • dbRecordset

Доступ к базе данных

Как правило, доступ к базе данных выполняется посредством dbConnection. Указывается источник данных и другие параметры соединения (имя пользователя, пароль и т.д.). Команды (объекты dbCommand) могут выполняться поочередно с dbConnection (с помощью последовательности команд SQL для управления источником данных), или могут быть открыты наборы записей. Транзакции также обрабатываются на уровне dbConnection.

ПРИМЕЧАНИЕ

Выражение на языке SQL должно соответствовать правилам сервера, который вами используется. Например, в то время, как программа Microsoft Access с оператором LIKE использует символ звездочка (*), SQL-сервер использует символ процентного отношения (%), соответствующий стандарту ANSI: SELECT * FROM Products WHERE ProductName Like ‘M%’. Дальнейшее использование символа «;» может привести к проблемам, если он указывается в конце выражений на SQL (например,»SELECT * FROM x;»)!

Наборы записей

Наборы записей определяют подмножество табличных данных, которые обычно определяются выражением SQL SELECT . Каждый набор записей имеет текущую строку (если только она не является пустой); после открытия набора записей она является первой строкой, которая возвращается базой данных. Вы можете перемещаться по набору записей (первая строка, следующая, предыдущая, последняя и т.д.), т.е. можно менять позицию текущей строки, а также можно считывать данные столбца текущей строки и описывать их, указывая номер столбца. Можно создавать новые строки, изменять и удалять строки.

Возможные типы данных

anyType частично используется в качестве типа данных для считывания и записи содержимого столбцов (полей), при этом можно выполнять преобразование следующих типов данных:

  • Целые числа (8, 16, 32 и 64 бита, со знаком/без знака)
  • Числа с плавающей запятой (float, double, long, longLong (64 бита), ulong и uLongLong (64 бита))
  • Строки
  • Дата/время (вкл. секунды)
  • Логические значения
  • Большие двоичные объекты (только при работе с Linux)

НУЛЕВЫЕ значения в базе данных (значение неизвестно) возвращаются в виде пустых строк. Неизвестные типы данных (dbPutField не может обработать DynVars, LangTextVars, BlobVars и RecVars,а также типы данных db…) возвращаются в виде строки «N/A» («не доступно»).

Повторный запрос

Данные набора записи могут быть помещены во внутренний буфер. Метод «повторного запроса» используется для внесения изменений в источник данных, созданный другими пользователями, если набор записей после его открытия становится видимым.

Транзакции

Транзакции позволяют управлять пакетными данными. Т.е. все изменения, выполненные в источнике данных с начального момента времени, который необходимо определить (начало транзакции), помещаются во внутренний буфер, а в конце они выдаются приложением («Commit», т.е. «Фиксация») или отклоняются («Rollback», т.е. «Откат»). Изменения становятся видимыми для других пользователей источника данных только после окончания транзакции, сразу после нее, однако это имеет место для приложения, которое вносит изменения. Транзакции включают в себя изменения в источнике данных, внесенные при помощи объектов dbCommand и dbRecordset.

Запрос ошибки

Каждый метод db (кроме метода dbEOF, в котором есть логическое возвращаемое значение) возвращает числовое возвращаемое значение, при этом 0 указывает на удачное выполнение операции. Если возвращенные значения не равны 0, то с помощью метода dbGetError можно получить имеющийся в данный момент внутренний код ошибки, текст ошибки и код ошибки SQL. При работе с Windows the возвращаемый код ошибки имеет вид, характерный для ADO .

IconПРИМЕР

С помощью следующего кода считываются все записи таблицы «PERS» из базы данных Access C:/test/jetdb/test.mdb«), а также отображаются первых два столбца каждой строки.

int rc;
dbConnection conn;
dbRecordset rs;
anytype fld;
 rc = dbOpenConnection («DRIVER=Microsoft Access Driver (*.mdb);
DBQ=TEST.MDB;
 DefaultDir=C://test//jetdb;
UID=;PWD=;», conn);
if (!rc)
{
rc = dbOpenRecordset (conn, «SELECT * FROM PERS», rs);
if (!rc)
{
while (!rc && !dbEOF (rs))
{
rc = dbGetField (rs, 1, fld);
if (!rc)DebugN(«field 1: » , fld);
rc = dbGetField (rs, 2, fld);
if (!rc)DebugN(«field 2: » , fld);
rc = dbMoveNext (rs);
}
dbCloseRecordset (rs);
}
dbCloseConnection (conn);

Информацию по поиску и устранению неполадок в интерфейсе ADO см. раздел Trouble-shooting Control-ADO (Поиск и устранение неполадок в Control-ADO).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *