Библиотечный модуль DbLibrary содержит константы _con_DbLibrary.inc, переменные _var_DbLibrary.inc, функции _fun_DbLibrary.inc, относящиеся к поддержке СУБД (Системы Управления Базами Данных). Он расширяет возможности библиотеки DbApi, входящей в компилятор DaqPascal.
Смотрите описание констант, переменных, функций библиотеки. Научитесь включать её в прикладные программы. Ознакомьтесь также с схемой взаимодействия компонентов.
В состав библиотеки (кроме неё самой) включаются файлы:
_con_StdAdoDb - большой файл констант программного интерфейса ADO.
_con_StdSqlDb - большой файл констант программного интерфейса SQLDB.
Использование библиотеки предполагает следование следующему шаблону программы:
program Demo; { How to use DbLibrary }
const
{------------------------------}{ Declare uses program constants: }
{$I _con_StdLibrary} { Include all Standard constants, }
{------------------------------}{ And add User defined constants: }
{$I _con_DbLibrary} { DbLibrary constants }
// User code - constants...
var
{------------------------------}{ Declare uses program variables: }
{$I _var_StdLibrary} { Include all Standard variables, }
{------------------------------}{ And add User defined variables: }
{$I _var_DbLibrary} { DbLibrary variables }
// User code - variables...
{------------------------------}{ Declare procedures & functions: }
{$I _fun_StdLibrary} { Include all Standard functions, }
{------------------------------}{ And add User defined functions: }
{$I _fun_DbLibrary} { DbLibrary functions }
// User code - functions...
{
Clear user application strings...
}
procedure ClearApplication;
begin
ClearDbLibrary;
// User code - clear...
end;
{
User application Initialization...
}
procedure InitApplication;
begin
InitDbLibrary;
// User code - init...
end;
{
User application Finalization...
}
procedure FreeApplication;
begin
FreeDbLibrary;
// User code - free...
end;
{
User application Polling...
}
procedure PollApplication;
begin
if ShouldPollDbLibrary then PollDbLibrary;
// User code - poll...
end;
{
Process data coming from standard input...
}
procedure StdIn_Processor(var Data:String);
var cmd,arg:String; n:Integer;
begin
ViewImp('CON: '+Data);
{
Handle "@cmd=arg" or "@cmd arg" commands:
}
cmd:='';
arg:='';
if GotCommand(Data,cmd,arg) then begin
// User code - handle stdin...
{
Handle other commands by default handler...
}
StdIn_DefaultHandler(Data,cmd,arg);
end;
Data:='';
cmd:='';
arg:='';
end;
{***************************************************}
{***************************************************}
{*** ***}
{*** MMM MMM AAA IIII NNN NN ***}
{*** MMMM MMMM AAAA II NNNN NN ***}
{*** MM MMMM MM AA AA II NN NN NN ***}
{*** MM MM MM AA AA II NN NN NN ***}
{*** MM MM AAAAAAA II NN NNNN ***}
{*** MM MM AA AA IIII NN NNN ***}
{*** ***}
{***************************************************}
{$I _std_main}{*** Please never change this code ***}
{***************************************************}
db_idns_uid - список названий для параметра имени пользователя: 'User ID,User,UID'.
db_idns_pwd - список названий для параметра пароля пользователя: 'Password,PWD'.
db_idns_server - список названий для параметра имени сервера: 'DataSource,Server,Host'.
db_idns_dbname - список названий для параметра имени базы данных: 'Database,Location,Data Source,DBNAME,FILEDSN,DSN'.
db_brm_hide = 0 - режим (hide) подавления вывода сообщений об ошибках
db_brm_echo = 1 - режим (echo) краткого вывода сообщений об ошибках в Главную Консоль
db_brm_soft = 2 - режим (soft) более подробного вывода сообщений об ошибках в Главную Консоль
db_brm_hard = 3 - режим (hard) самого подробного вывода сообщений об ошибках с записью в журнал
db_sym_SQLite3 = 'SQLite3' - стандартное имя СУБД SQLite3
db_sym_Firebird = 'Firebird' - стандартное имя СУБД Firebird
db_sym_PostgreSQL = 'PostgreSQL' - стандартное имя СУБД PostgreSQL
db_sym_MySQL = 'MySQL' - стандартное имя СУБД MySQL
db_sym_SYSDBA = 'SYSDBA' - стандартное значение uid по умолчанию для Firebird
db_sym_masterkey = 'masterkey' - стандартное значение pwd по умолчанию для Firebird
db_sym_localhost = 'localhost' - стандартное имя локального компьютера
Константы ADO см. в файле _con_StdAdoDb.
Константы SQLDB см. в файле _con_StdSqlDb.
ShouldPollDbLibrary - Флаг опроса модуля DbLibrary.
_DbLibrary_Internals_ - Переменные для внутреннего использования DbLibrary.
db_brm_uses - режим вывода сообщений об ошибках в процедурах и функциях этой библиотеки.
function db_engine_list:String;
Возвращает список поддерживаемых движков - сейчас это ADO,SQLDB,ZEOS.
function db_engine_uses:Integer;
Возвращает номер текущего используемого библиотекой движка из набора db_engine_ado,db_engine_sqldb,db_engine_zeos.
function db_engine_uses_name:String;
Возвращает имя текущего используемого библиотекой движка из набора ADO,SQLDB,ZEOS.
procedure db_engine_uses_assign(aEngine:Integer);
Задает номер текущего используемого библиотекой движка из набора db_engine_ado,db_engine_sqldb,db_engine_zeos.
function db_AdoTypeToString(FieldType:Integer):String;
Возвращает строку с именем типа данных движка ADO, на который указывает FieldType.
Эту функцию удобно использовать для отладочного вывода при анализе полей данных при чтении данных из СУБД.
function db_SqlDbTypeToString(FieldType:Integer):String;
Возвращает строку с именем типа данных движка SQLDB, на который указывает FieldType.
Эту функцию удобно использовать для отладочного вывода при анализе полей данных при чтении данных из СУБД.
function db_EngineTypeToString(Engine,FieldType:Integer):String;
Возвращает строку с именем типа данных указанного движка Engine, на который указывает FieldType.
Эту функцию удобно использовать для отладочного вывода при анализе полей данных при чтении данных из СУБД.
function db_FieldTypeToString(FieldType:Integer):String;
Возвращает строку с именем типа данных текущего движка db_engine_uses, на который указывает FieldType.
Эту функцию удобно использовать для отладочного вывода при анализе полей данных при чтении данных из СУБД.
function db_AdoTypeToTagType(FieldType:Integer):Integer;
Преобразует (проецирует) тип FieldType данных движка ADO в тип тегов, принятых в DaqPascal.
Эту функцию следует использовать для анализа полей данных при чтении данных из СУБД.
function db_SqlDbTypeToTagType(FieldType:Integer):Integer;
Преобразует (проецирует) тип FieldType данных движка SQLDB в тип тегов, принятых в DaqPascal.
Эту функцию следует использовать для анализа полей данных при чтении данных из СУБД.
function db_EngineTypeToTagType(Engine,FieldType:Integer):Integer;
Преобразует (проецирует) тип FieldType данных движка Engine в тип тегов, принятых в DaqPascal.
Эту функцию следует использовать для анализа полей данных при чтении данных из СУБД.
function db_FieldTypeToTagType(FieldType:Integer):Integer;
Преобразует (проецирует) тип FieldType данных движка db_engine_uses в тип тегов, принятых в DaqPascal.
Эту функцию следует использовать для анализа полей данных при чтении данных из СУБД.
При использовании функции следует учитывать, что данные из СУБД могут считываться в разных форматах.
Например, целое число можно прочитать как целое, вещественное или как строку - все способы допустимы.
Однако наиболее подходящим типом для чтения будет tag_type_int, который ссылается на Integer.
При этом для анализа данных зачастую нет разницы между, например, 8, 16 иди 32 - битными целыми,
т.к. они все равно представляются в DaqPascal типом Integer.
Поэтому функция проецирует несколько разных целочисленных типов СУБД на тип tag_type_int.
Аналогично, все вещественные типы проецируются на tag_type_real,
а строковые и символьные - на tag_type_string.
Таким образом, функция подсказывает, каким образом лучше считывать данные из полей СУБД.
Например:
// анализ поля с именем id записи rst для текущего движка db_engine_uses case db_FieldTypeToTagType(db_fieldsTypes(rst,id)) of // проецируем тип СУБД на тип тега tag_type_int: idata:=db_fieldsAsInt(rst,id,'r',0); // читаем поле как целое число tag_type_real: rdata:=db_fieldsAsFloat(rst,id,'r',0); // читаем поле как вещественное число tag_type_string: sdata:=db_fieldsAsString(rst,id,'r',''); // читаем поле как строку end;Следует учитывать, что функция db_FieldTypeToTagType проецирует дату/время в вещественный тип tag_type_real, так что в этом случае прочитанное число надо еще преобразовать в нужные единицы времени, в зависимости от типа FieldType. Также надо учитывать, что некоторые типы (бинарные и процедурные) проецируются в tag_type_nil, так как для них неясен способ их обработки. Обработка таких полей - это "особый случай".
function db_AdoTypeIsDateTime(FieldType:Integer):Boolean;
Проверяет, является ли тип FieldType данных движка ADO одним из типов времени DateTime.
function db_SqlDbTypeIsDateTime(FieldType:Integer):Boolean;
Проверяет, является ли тип FieldType данных движка ADO одним из типов времени DateTime.
function db_EngineTypeIsDateTime(Engine,FieldType:Integer):Boolean;
Проверяет, является ли тип FieldType данных движка Engine одним из типов времени DateTime.
function db_FieldTypeIsDateTime(FieldType:Integer):Boolean;
Проверяет, является ли тип FieldType данных движка db_engine_uses одним из типов времени DateTime.
function db_EngineTypeIsBlob(Engine,FieldType:Integer):Boolean;
Проверяет, является ли тип FieldType данных движка Engine одним из типов двоичных данных BLOB.
function db_FieldTypeIsBlob(FieldType:Integer):Boolean;
Проверяет, является ли тип FieldType данных движка db_engine_uses одним из типов двоичных данных BLOB.
function db_DetectBlobImageType(blob:String):String;
Пытается определить, является ли блоб blob одним из типов графических изображений
из набора (bmp,gif,png,pbm,pgm,ppm,jpg,xpm,tif,pcx).
Форматы изображений определяются по содержимому блоба - по сигнатурам и эмпирическим признакам на основе
определений этих форматов.
function db_AdoDateTimeToMs(FieldData:Real; FieldType:Integer):Real;
Преобразует данные движка ADO со значением поля FieldData и типом поля FieldType
в значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова).
function db_MsToAdoDateTime(ms:Real; FieldType:Integer):Real;
Преобразует значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова)
в данные движка ADO с типом поля FieldType.
function db_SqlDbDateTimeToMs(FieldData:Real; FieldType:Integer):Real;
Преобразует данные движка SQLDB со значением поля FieldData и типом поля FieldType
в значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова).
function db_MsToSqlDbDateTime(ms:Real; FieldType:Integer):Real;
Преобразует значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова)
в данные движка SQLDB с типом поля FieldType.
function db_EngineDateTimeToMs(FieldData:Real; Engine,FieldType:Integer):Real;
Преобразует данные движка Engine со значением поля FieldData и типом поля FieldType
в значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова).
function db_MsToEngineDateTime(ms:Real; Engine,FieldType:Integer):Real;
Преобразует значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова)
в данные движка Engine с типом поля FieldType.
function db_FieldDateTimeToMs(FieldData:Real; FieldType:Integer):Real;
Преобразует данные движка db_engine_uses со значением поля FieldData и типом поля FieldType
в значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова).
function db_MsToFieldDateTime(ms:Real; FieldType:Integer):Real;
Преобразует значение времени ms по часам DaqPascal (миллисекунд от Рождества Христова)
в данные движка db_engine_uses с типом поля FieldType.
function db_guery_connectionstring(cs,id:String):String;
Функция выполняет запрос (query) параметра данных с идентификаторами из списка id
в шаблоне строки подключения cs и возвращает значение найденного параметра или пустую строку.
Строка подключения (ConnectionString) имеет вид списка Name=Value;...,
разделенного символом точки с запятой (;) и содержит поименованные значения параметров подключения.
Аргумент id содержит список идентификаторов, значения которых надо прочитать.
Это связано с тем, что в разных СУБД одни и те же параметры могут иметь разные имена.
Например, имя пользователя может называться 'User ID,User,UID'.
По этой причине задается список возможных названий параметра.
Заметим, что списки возможных названий параметров есть в константах модуля.
Например:
// Пример чтения параметра ConnectionString из библиотеки шаблонов
cs:=db_sample_connectionstring('MSDASQL;Firebird'); // Чтение шаблона ConnectionString из библиотеки
uid:=db_query_connectionstring(cs,db_idns_uid); // Чтение имени пользователя
function db_subst_connectionstring(cs,id,sv:String):String;
Функция выполняет подстановку (substitution) значения данных sv с идентификаторами из списка id
в шаблоне строки подключения cs и возвращает результат подстановки.
Строка подключения (ConnectionString) имеет вид списка Name=Value;...,
разделенного символом точки с запятой (;) и содержит поименованные значения параметров подключения.
Предполагается, что аргумент cs содержит шаблон строки подключения, в котором надо заменить параметры.
Аргумент id содержит список идентификаторов, значения которых надо изменить.
Это связано с тем, что в разных СУБД одни и те же параметры могут иметь разные имена.
Например, имя пользователя может называться 'User ID,User,UID'.
По этой причине задается список возможных названий параметра.
Заметим, что списки возможных названий параметров есть в константах модуля.
Например:
// Пример формирования ConnectionString из библиотеки шаблонов
cs:=db_sample_connectionstring('MSDASQL;Firebird'); // Чтение шаблона ConnectionString из библиотеки
cs:=db_subst_connectionstring(cs,db_idns_uid,'Daq'); // Подстановка имени пользователя Daq
cs:=db_subst_connectionstring(cs,db_idns_pwd,'123'); // Подстановка пароля пользователя 123
cs:=db_subst_connectionstring(cs,db_idns_server,'localhost'); // Подстановка имени сервера localhost
cs:=db_subst_connectionstring(cs,db_idns_dbname,'employee'); // Подстановка имени базы данных employee
if (cs<>'') then dbc:=db_connection(0,cs) else dbc:=0; // Теперь можно использовать строку подключения
function db_sample_connectionstring(arg:String):String;
Выбирает из библиотеки шаблонов строк подключения такую строку подключения, которая подходит по признакам, заданным в аргументе arg.
Аргумент arg содержит список ключевых слов, которые должны присутствовать в искомом шаблоне (в любом его месте).
Например, cs:=db_sample_connectionstring('MSDASQL;Firebird'); выберет строку подключения
для провайдера MSDASQL и драйвера Firebird. Ключи поиска должны быть простыми (буквы, цифры).
Формирование строк подключения (ConnectionString) для разных СУБД является сложной задачей, полной "шаманства".
Для облегчения этой задачи в пакете есть библиотека шаблонов строк подключения
(см. db_read_connectionstring_samples).
Функции библиотеки позволяют легко выбрать из библиотеки нужный шаблон, а затем получить из него нужную строку подключения
путем замены параметров (сервер, база данных, имя пользователя, пароль).
Это гораздо проще, чем формировать строку полдключения "с нуля".
Смотрите пример.
function db_query_dbapimasterkey:String;
Cлужебная функция для внутреннего использования, возвращает мастер - пароль для кодирования паролей.
Кодировать пароли надо, чтобы не хранить их в открытом виде (это противоречит элементарным требованиям безопасности).
Пароли (при необходимости) хранятся в закодированном виде и декодируются с помощью мастер-пароля в процессе работы.
function db_build_connectionstring(keys,server,dbname,uid,pwd,opt:String; mode:Integer):String;
Основная (главная) функция для генерации строк подключения (ConnectionString) для разных СУБД из библиотеки шаблонов.
Работа функции основана на библиотеке шаблонов строк подключения. Сначала по ключевым словам находится нужный шаблон.
Затем в этом шаблоне выполняются подстановки параметров (имя сервера, имя базы данных, имя пользователя, пароль).
На выходе получается строка подключения с искомыми параметрами.
На вход подаются следующие аргументы:
// Формирование строки подключения без кодирования пароля
cs:=db_build_connectionstring('MSDASQL;Firebird','localhost','employee','SYSDBA','masterkey','dialect=3;pagesize=8192;',0);
// Формирование строки подключения с кодированием пароля
cs:=db_build_connectionstring('MSDASQL;Firebird','localhost','employee','SYSDBA','2aKRkiKfZr67','dialect=3;pagesize=8192;',6);
function db_validate_adapt_dbname(constr:String):String;
Служебная функция, которая корректирует (исправляет) имя файла базы данных в строке подключения,
применяя к нему функцию AdaptFileName.
Если имя базы данных не похоже на имя файла (не содержит символов \:/), то коррекция не делается.
Если имя базы данных имеет вид hostname:database, то имя базы данных выделяется и исправляется,
а имя сервера не затрагивается.
Функция полезна для кроссплатформенной разработки, чтобы корректировать строку подключения
в соответствии с правилами текущей операционной системы.
function db_validate_known_providers(constr:String)(dbtype,database:String):String;
Служебная функция, которая позволяет исправить имя провайдера и драйвера в строке подключения для известных провайдеров.
Функция работает примерно так. Если текущий движок SQLDB (т.е. db_engine_uses=db_engine_sqldb),
то делает ряд замен:
Provider=…IBProvider… => Provider=IB Provider=MSDASQL;Driver=Firebird… => Provider=IB Provider=MSDASQL;Driver=PostgreSQL… => Provider=PQ Provider=MSDASQL;Driver=SQLite3… => Provider=SQLite3Это позволяет адаптировать строки подключения, подготовленные для движка ADO, переделав их для движка SQLDB - по крайней мере для некоторых известных провайдеров.
function db_build_selectalltables(dbtype,database:String):String;
Служебная функция, которая позволяет сформировать SQL запрос на чтение всех таблиц бызы данных (database)
данного типа (dbtype), который может принимать значения из списка db_supporteddbtypes.
Значение (database) обычно не используется (пустая строка), т.к. имя базы данных обычно уже задано в строке подключения.
function db_supporteddbtypes:String;
Пользовательская функция, которая позволяет узнать список поддерживаемых библиотекой баз данных.
Например, это может быть: 'SQLite3,Firebird,MySQL,PostgreSQL'.
Актуальный список хранится в системной конфигурации пакета.
procedure db_bugreport_mode(con,mode:Integer);
Пользовательская процедура, которая задает режим (mode) вывода сообщений об ошибках (исключениях),
возникающих при работе подключения (con).
function db_just_sql_query(con:Integer; sql:String):Boolean;
Функция выполняет для открытого подключения (con) простой SQL запрос, заданный командой (sql),
включая открытие/закрытие транзакции. Подключение в момент вызова должно быть открыто (adStateOpen).
При этом результат запроса (набор записей recordset) игнорируется, а сам набор удаляется после выполнения команды.
Функция служит для выполнения простых SQL запросов, которые не требуют анализа результата.
Например, создание таблиц или добавление/изменение данных (insert,update) через SQL запрос.
Функция служит для упрощения программирования, чтобы сократить объем прикладного кода.
function db_easy_sql_query(cs,sql:String):Boolean;
Функция выполняет для заданной строки подключения (con) простой SQL запрос, заданный командой (sql),
включая создание/открытие/освобождение подключения и открытие/закрытие транзакции.
При этом результат запроса (набор записей recordset) игнорируется, а сам набор удаляется после выполнения команды.
Функция служит для выполнения простых SQL запросов, которые не требуют анализа результата.
Например, создание таблиц или добавление/изменение данных (insert,update) через SQL запрос.
Функция служит для упрощения программирования, чтобы сократить объем прикладного кода.
function db_default_uid(dbtype:String):String;
function db_default_pwd(dbtype:String):String;
Служебные функции, которые возвращают для СУБД типа (dbtype) начальное значение (по умолчаниию)
для имени пользователя (uid) и пароля (pwd).
Например: uid:=db_default_uid(db_sym_Firebird); pwd:=db_default_pwd(db_sym_Firebird);.
function db_sample_database_file(arg:String):String;
Служебная функция, которая возвращает для СУБД типа (arg) имя файла - примера БД
из секции Crw32.ini [DbApi.Database.File.Samples].
Это пустая база данных, нужная лишь для тестирования подключений к СУБД.
Например: fbd:=db_sample_database_file(db_sym_Firebird);.
function db_detect_dbtype(con:Integer; constr:String):String;
Пользовательская функция для определения типа СУБД для подключения (con)
или строки подключения (constr).
Извлекает из строки подключения поля (Provider,Driver) и ищет в них строки,
входящие в список поддерживаемых типов СУБД
db_supporteddbtypes.
Если строка найдена, считается, что подключение относится к найденному типу.
function db_query_selectalltables(con:Integer; dbtype:String):String;
Пользовательская функция для запроса списка всех таблиц базы данных типа (dbtype), к которой выполнено подключение (con).
Если тип не указан (пуст), то он определяется автоматически из параметров строки подключения.
Подключение в момент вызова функции должно быть открыто (adStateOpen).
Список таблиц возвращается в виде текста с разделителем EOL.
function db_query_showtables(constr,dbtype:String):String;
Пользовательская функция для запроса списка всех таблиц базы данных типа (dbtype), со строкой подключения (constr).
Если тип не указан (пуст), то он определяется автоматически из параметров строки подключения.
Список таблиц возвращается в виде текста с разделителем EOL.
procedure db_read_connectionstring_samples;
Служебная процедура, которая читает список шаблонов строк подключения из секции Crw32.ini [DbApi.ConnectionString.Samples].
Обычно её не надо вызывать явно, т.к. она вызывается автоматически при старте библиотеки.
procedure db_read_selectalltables_samples;
Служебная процедура, которая читает список шаблонов запросов для чтения списка всех таблиц из секции Crw32.ini [DbApi.Query.SelectAllTables].
Обычно её не надо вызывать явно, т.к. она вызывается автоматически при старте библиотеки.
procedure db_read_database_file_samples;
Служебная процедура, которая читает список тестовых примеров файлов баз данных из секции Crw32.ini [DbApi.Database.File.Samples].
Обычно её не надо вызывать явно, т.к. она вызывается автоматически при старте библиотеки.
function db_is_firebird_exe_running:Boolean;
Служебная функция, которая проверяет, работает ли в данный момент серверный процесс firebird.
function db_create_local_fdb(fdb,uid,pwd,opt,constr:String; mode:Integer):Boolean;
Функция создает локальный файл с именем (fbd) для базы данных СУБД Firebird
с именем пользователя (uid), паролем (pwd) и опциями (opt).
Параметр режима (mode=1..8) нужен для декодирования пароля, если используется закодированный пароль.
Для незакодированного пароля режим не нужен (mode=0).
Параметр (constr) задает строку подключения к СУБД и может быть пустой строкой,
если используются параметры по умолчанию.
Если в момент вызова файл (fdb) уже существует, он не создается;
для его (пере)создания сначала надо удалить существующий файл.
Если файл не имеет расширения, добавляется расширение по умолчанию (.fdb).
procedure ClearDbLibrary;
procedure InitDbLibrary;
procedure FreeDbLibrary;
procedure PollDbLibrary;
Стандартные процедуры очистки/инициализации/завершения/опроса модуля DbLibrary.
Их применение показано в шаблоне программы.
/------------\ /------------\ /-------\ /-- Provider 1 (IBProvider)---------------------+--[Firebird API]----[FIREBIRD]
| Прикладная | | Библиотека | | ADO |/ /- [ODBC Driver]---/
| Программа |==| DbApi |==| только|---- Provider 2 (MSDASQL)---+---[ODBC Driver]------[SQLite3 API]------[SQLite3]
| DaqPascal | | DaqPascal | | Win32 |\ \--[ODBC Driver]---\
\-----+------/ \------+--+--/ \-------/ \-- Provider 3 (???????) +--[MySQL API]-------[MySQL]
| | |
\--[DbLibrary]--/ | /-------\ /-- Provider 1 (IB)-------- --------------------+--[Firebird API]----[FIREBIRD]
| | SQLDB |/ /- [ODBC Driver]---/
\====| Win32 |---- Provider 2 (ODBC)------+---[ODBC Driver]------[SQLite3 API]------[SQLite3]
| Linux |\ \--[ODBC Driver]---\
\-------/ \-- Provider 3 (???????) +--[MySQL API]-------[MySQL]
ПРИЛОЖЕНИЕ----DBAPI------------- ДВИЖКИ------ПРОВАЙДЕРЫ-------------ДРАЙВЕРЫ----------КЛИЕНТСКИЕ БИБЛИОТЕКИ---ЦЕЛЕВАЯ СУБД
Прикладная программа использует библиотеку DbApi, встроенную в ядро DaqPascal, а также сервисную библиотеку
DbLibrary, облегчающую и упрощающую работу с СУБД, которая написана на языке DaqPascal.
Функции DbApi работают через движки (engine), т.е. библиотеки, реализующие требуемые функции.
В настоящее время доступны движки ADO (от Misrosoft) SQLDB (основная кроссплатформенная библиотека Lazarus)
и ZEOS (дополнительная кроссплатформенная библиотека Lazarus),
который работает с конкретными СУБД через библиотеки провайдеров (поставщиков СУБД).
Провайдеры могут напрямую подключаться к программному интерфейсу API конкретной СУБД
(как, например, IBProvider к Firebird API).
Желаю успешного использования DbLibrary!