Использование API для доступа к БД
В ряде СУБД при разработке приложений используются библиотеки функций, представляющие собой интерфейс между прикладными программами и СУБД(Application Program Interface — API). В настоящее время существует много новых API для доступа к БД. Это ODBC, JDBC, OLE DB.
1. Алгоритм взаимодействия
1) Получение доступа к БД
Программа получает доступ к БД с помощью вызова одной или нескольких API-функций, подключающих ее к СУБД и конкретной БД.
Пример:
LOGINREC *loginrec; — структура для хранения регистрационных данных.
DBPROCESS *dbproc; — структура данных, описывающая соединение.
loginrec=dblogin(); — создаем регистрационную структуру.
DBSTLUSER(loginrec, “username”); — указываем пользователя.
DBSTLPWD(loginrec, “password”); — указываем пароль.
dbproc=dbopen(loginrec, “server”); — подключаемся к БД.
2) Формирование операторов
SQL-оператор формируется в виде текстовой строки, и затем строка передается в качестве параметра при вызове соответствующей API-функции в СУБД
Пример:
char amount_str[31]; — число, вводимое пользователем.
printf(“Увеличить/уменьшить объем продаж на: ”); — запрос на обновление
gets(amount_str); — вводим значение.
dbcmd(dbproc, “update SalesPeople set Amt=Amt+”); — передаем оператор в DB-Library
dbcmd(dbproc, &amount_str); — передаем значение.
dbsqlexec(dbproc); — выполняем оператор.
3) Контроль состояний операторов и ошибок
Программа вызывает API-функции для проверки состояния переданного в СУБД оператора и для обработки ошибок.
Пример:
If (dbresult(dbproc)!=SUCCEED) printf(“Ошибка обновления.\n”);
else printf(“Обновление произведено. \n”);
4) Обработка полученных результатов
Если SQL-оператор представляет собой запрос, то, вызывая API-функции, программа считывает результаты запроса в свои переменные. Обычно за один вызов возвращается одна строки или один столбец данных.
5) Отключение от БД
Свое обращение к БД программа заканчивает вызовом API-функции, отключающей ее от СУБД.
Пример:
dbclose(dbproc); — разрываем соединение.
//dbexit(); — разрываем все соединения.
return(0);
2. Особенности API
• API обеспечивает более эффективную и быструю связь между прикладной программой и СУБД.
• Существенно снижается сетевой трафик.
• Более гибко обрабатываются ошибки
• Не требуется предкомпилятор.
3. СУБД с API
• Oracle (первоначально было около 20 функций, сейчас около 60).
• SQLBase (75 функций).
• MS SQL Server (100 функций).
4. API MS SQL Server
Библиотеку (в SQL Server это database Library – dblib), располагают на клиентской машине в файле NtwDblib.Dll. Все функции начинаются на db***().
Примечание:
• Подробные сведения об MS SQL API можно найти а справочном файле: dblibe.chm и dblibe.chi.
• Функции из библиотеки dblib могут быть включены в другие языки, например, Паскаль.
Function DbCmd(DbProc: PDBPOCESS; CmdString: LPCSTR):RETCODE; cdecl;
…
Implementation
Function DbCmd; External ‘NtwDblib.Dll’ Name ’dbcmd’;