|
Программирование >> Sql: полное руководство
области sqlda. В SQL Server для привязки столбцов программа использует функцию dbbmd О. В обоих случаях результаты запроса возвращаются в буферы программы строка за строкой. В динамическом SQL профамма извлекает сфоки из таблицы результатов запроса с помощью специальной разновидности инсфукции fetch, в которой задана область sqlda. В SQL Server профамма извлекает Сфоки, вызывая функцию dbnextrow() . В целом методика выполнения динамических запросов в обоих случаях очень похожа. Однако в динамическом SQL применяются специальные инсфукции и сфуктуры данных, соверщенно не похожие на те, что используются для выполнения запросов в статическом SQL. А в SQL Server методика выполнения динамических запросов в основном та же, что и методика выполнения всех остальных запросов. Единственная особенность заключается в том, что добавляются функции библиотеки DB-Library, возвращающие информацию о столбцах таблицы результатов запроса. Это облегчает понимание подхода, используемого в SQL Server, профаммистам, имеющим незначительный опыт работы с SQL. Протокол ODBC и стандарт SQL/CLI ODBC (Open Database Connectivity - открытый доступ к базам данных) - это разработанный компанией Microsoft универсальный профаммный интерфейс для доступа к базам данных. Хотя в современном компьютерном мире Microsoft ифает важную роль как производитель профаммного обеспечения для баз данных, все же, в первую очередь, она один из ведущих производителей операционных систем, и именно это послужило мотивом создания ODBC: Microsoft захотела облегчить разработчикам приложений Windows доступ к базам данных. Все дело в том, что различные СУБД существенно отличаются друг от друга, как и их профаммные интерфейсы. Если разработчику нужно было написать приложение, работающее с базами данных нескольких СУБД, для каждой из них приходилось писать отдельный интерфейсный модуль (обычно называемый драйвером). Чтобы избавить профаммистов от выполнения одной и той же рутинной и достаточно сложной работы, Microsoft рещила на уровне операционной системы стандартизировать интерфейс взаимодействия между приложениями и СУБД, благодаря чему во всех профаммах мог бы использоваться один и тот же универсальный набор функций, поддерживаемый всеми производителями СУБД. Таким образом, от внедрения ODBC выифали и разработчики приложений, и производители СУБД, для которых также решалась извечная проблема совместимости. Формирование стандарта SQL/CLI Даже если бы протокол ODBC был всего лишь собственным стандартом компании Microsoft, его значение все равно было бы очень велико. Однако Microsoft постаралась сделать его независимым от конкретной СУБД. Одновременно ассоциация производителей СУБД (SQL Access Group) работала над стандартизацией протоколов удаленного доступа к базам данных в архитектуре клиент/сервер. Microsoft убедила ассоциацию принять ODBC в качестве независимого стандарта доступа к базам данных. В дальнейшем этот стандарт перешел в ведение другой организации, Европейского консорциума Х/Ореп, и был включен в ее комплект стандартов CAE (Comrrion Application Environment - единая прикладная среда). С ростом популярности программных интерфейсов доступа к базам данньгх организации, ответственные за принятие официальных стандартов, стали уделять этому аспекту SQL все более пристальное внимание. На основе стандарта Х/Ореп (базировавшегося на исходной версии ODBC, разработанной компанией Microsoft) с небольшими модифи-каххиями был разработан официальный стандарт ANSI/ISO. Этот стандарт, известный как SQL/CL1 (SQL/Call Level Interface - интерфейс уровня вызовов функций), был опубликован в 1995 году под названием ANSI/ISO/IEC 9075-3-1995. Он представляет собой Часть 3 разрабатываемого многоуровневого стандарта SQL3, который является развитием опубликованного в 1992 году стандарта SQL2. Microsoft привела ODBC в соответствие со стандартом SQL/CLI, реализация которого составляет ядро последней версии ее протокола - ODBC 3. Однако полный набор высокоуровневых функций ODBC 3 выходит далеко за рамки спецификации CLL он предоставляет разработчикам приложений гораздо более широкие возможности и решает ряд специфических задач, связанных с использованием ODBC как части операционной системы Windows. Преимущества связки ODBC/CLI как для разработчиков приложений, так и для производителей СУБД были настолько очевидны, что оба стандарта очень быстро получили самую широкую поддержку. Практически все производители реляционных СУБД включили в свои продукты соответствующие интерфейсы. ODBC и CLI поддерживаются тысячами приложений, включая ведущие пакеты инструментальных средств разработки. Стандартом SQL/CLI определяется около сорока функций (табл. 19.2). Они служат тя подключения к серверу баз данных, вьтолнения инструкций SQL, обработки результатов запросов, а также обработки ошибок, произошедших в ходе выполнения инструкций. Эти функции обеспечивают полный набор возможностей, предоставляемых встроенным SQL, включая как статический, так и динамический SQL. Таблица 19.2. Фунт$* SQL/CUt4 Функция Описание Управление ресурвами и подключением к базе данных SQLAllocHandle О Выделяет ресурсы для среды SQL, сеанса подключения к базе данных, описателя CLI или инструкции SQLFreeHandle {) Освобождает ранее выделенные ресурсы SQLAllocEnv () Выделяет ресурсы для среды SQL SQLFreeEnv {) Освобождает ресурсы, выделенные для среды SQL SQLAllocConnect О Выделяет ресурсы для сеанса подключения к базе данных SQLFreeConnect () Освобождает ресурсы, выделенные для сеанса подключения к базе данных SQLAllocStmt () Выделяет ресурсы для инструкции SQL SQLFreeStmt () Освобождает ресурсы, выделенные дпя инструкции SQL SQLConnect () Устанавливает соединение с базой данных SQLDisconnect () Разрывает соединение с базой данных Выполнение инструкций SQL SQLExecDirect () Непосредственно выполняет инструкцию SQL функция SQLPrepare О SQLExecute О SQLRowCount{) Управление транзакциями SQLEndTran{) SQLCancel () Обработка параметров SQLBmdParamO Описание Подготавливает инструкцию SQL к последующему выполнению Выполняет ранее подготовленную инструкцию SQL Возвращает количество строк, обработанных последней инструкцией SQL Завершает или отменяет транзакцию меняет выполнение текущей инструкции SQL SQLParamData() SQLPutData {) Связывает параметр инструкции SQL с адресом программного буфера Сообщает приложению адрес параметра подготавливаемой инструкции, для которого необходимо предоставить данные, прежде чем инструкция сможет быть выполнена Предоставляет данные для параметра подготавливаемой инструкции, эта функция может вызываться многократно, чтобы передавать данные по частям Обработка результатов запроса / SQLSetCursorName I) Назначает имя набору записей Возвращает имя набора записей Связывает столбец в таблице результатов запроса с программ} ым буфером Возвращает следующую строку из таблицы результатов запроса Возвращает указанную строку из таблицы результатов запроса Закрывает набор записей Возвращает значение указанного стотбца из таблицы результатов запроса Описание результатов запроса SQLNumResultCols () Возвращает количество столбцов в таблице результатов запроса Возвращает описание указанного столбца в таблице результатов запроса Возвращает информацию об указанном атрибуте заданного столбца в таблице результатов запроса Возвращает значение указанного поля из описателя CLI Устанааливает значение указанного поля в описателе CL1 Возвращает значения набора полей из описателя CLI Устанавливает значения набора полей в описателе CL1 Копирует содержимое одного описателя CL1 в другой SQLGetCursorName() SQLBindColО SQLFetchO / SQLFetchScroll () SQLCloseCursorО SQLGetDatal) SQLDescribeCol() SQLColAttribute О SQLGetDescField 0 SQLSetDescFieldO SQLGetDescRec 0 SQLSetDescRec 0 SQLCopyDesc 0 Обработка ошибок SQLError о SQLGetDiagField() SQLGetDiagRec 0 Возвращает информацию об ошибке, произошедшей во время последнего хызова функции CL1 Возвращает значение указанного поля из специальной структуры CLI, содержащей диагностическую информацию Возвращает значения набора полей из специальной структуры CLI, содержащей диагностическую информацию
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |