Мегаобучалка Главная | О нас | Обратная связь


Схема извлечения данных с использованием ODBC API



2019-07-03 332 Обсуждений (0)
Схема извлечения данных с использованием ODBC API 0.00 из 5.00 0 оценок




Вопросы по курсу «Распределенные SQL приложения»

Оглавление

Архитектура ODBC. ODBC API. Применение ODBC для выборки данных. Блочная выборка данных. Дескрипторы. Использование параметрических запросов. Использование именованных курсоров. 1

Основные функции ODBC.. 2

Дескрипторы.. 2

Схема извлечения данных с использованием ODBC API 5

Формирование параметрических запросов. 6

Архитектура OLE DB. Механизм использования OLE DB. OLE DB API. 8

Реализация доступа к базам данных с использованием библиотеки VCL (Delphi, Object Pascal). 8

Наборы данных. 9

Классы библиотеки VCL. 11

События, инициируемые для наборов данных. 18

Реализация доступа к базам данных с использованием библиотеки MFC (Visual Studio, C++). 18

Библиотека MFC. 18

Классы для работы с базами данных. 19

Реализация доступа к базам данных с использованием библиотеки JDK (Java). 24

Реализация доступа к базам данных с использованием библиотеки .NET Framework (Visual Studio; С#, C++) 32

Применение встроенного SQL. Использование SQLJ. 35

Реализация публикации данных на HTML-страницах. Использование серверных приложений (С++, Object Pascal). 37

JDBC. Публикация данных с использованием сервлетов и JSP-страниц (Java). 37

Технология ASP.NET. Реализация публикации данных (C#). 38

Механизмы обмена данными посредством XML. Загрузка данных из XML в базу данных и получение XML-документов из таблиц базу данных (Delphi, Object Pascal; Visual Studio, C#). 40

Применение языка LINQ для выборки данных. 47

Реализация объектно-реляционного связывания для работы с базами данных на языке C# с использованием библиотеки, NET Framework, 49

Применение EJB компонентов для работы с базами данных на языке Java. 49

 

 

Архитектура ODBC. ODBC API. Применение ODBC для выборки данных. Блочная выборка данных. Дескрипторы. Использование параметрических запросов. Использование именованных курсоров.

Архитектура ODBC

Архитектура ODBC представлена четырьмя компонентами (рис. 1.1):

· Приложение-клиент, выполняющее вызов функций ODBC.

· Менеджер драйверов, загружающий и освобождающий ODBC-драйверы, которые требуются для приложений-клиентов. Менеджер драйверов обрабатывает вызовы ODBC-функций или передает их драйверу.

· ODBC-драйвер, обрабатывающий вызовы SQL-функций, передавая SQL-серверу выполняемый SQL-оператор, а приложению-клиенту - результат выполнения вызванной функции.

· Источник данных, определяемый как конкретная локальная или удаленная база данных.


Рис. 1.1. Архитектура ODBC

Основное назначение менеджера драйверов - загрузка драйвера, соответствующего подключаемому источнику данных, и инкапсуляция взаимодействия с различными типами источников данных посредством применения различных ODBC-драйверов.

ODBC-драйверы, принимая вызовы функций, взаимодействуют с приложением-клиентом, выполняя следующие задачи:

· управление коммуникационными протоколами между приложением-клиентом и источником данных;

· управление запросами к СУБД;

· выполнение передачи данных от приложения-клиента в СУБД и из базы данных в приложение-клиент;

· возвращение приложению-клиенту стандартной информации о выполненном вызове ODBC-функции в виде кода возврата;

· поддерживает работу с курсорами и управляет транзакциями.

Приложение-клиент одновременно может устанавливать соединения с несколькими различными источниками данных, используя разные ODBC-драйверы, а также несколько соединений с одним и тем же источником данных, используя один и тот же ODBC-драйвер.

Основные функции ODBC

Как уже отмечалось в предыдущей лекции, все функции ODBC API условно можно разделить на четыре группы:

· основные функции ODBC, обеспечивающие взаимодействие с источником данных;

· функции установки (setup DLL);

· функции инсталляции (installer DLL) ODBC и источников данных;

· функции преобразования данных (translation DLL), вызываемые при передаче данных от драйвера к источнику данных или обратно.

Дескрипторы

Создание дескрипторов

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

Дескриптор окружения определяет некоторую структуру, содержащую данную информацию. Непосредственно дескриптор окружения обычно используется при вызове функций SQLDataSources и SQLDrivers и при создании дескрипторов соединения.

Для приложения-клиента, реализующего с использованием функций ODBC API доступ к источнику данных, достаточно иметь один дескриптор окружения.

Создание дескриптора окружения выполняется функцией SQLAllocHandle, а освобождение - функцией SQLFreeHandle.

Функция SQLAllocHandle введена в версии ODBC 3.x вместо существовавших в версии ODBC 2.0 функций SQLAllocConnect, SQLAllocEnv и SQLAllocStmt. Для того чтобы приложение, использующее функцию SQLAllocHandle, могло работать через драйверы ODBC 2.x, менеджер драйверов версии 3.x заменяет вызовы функций третьей версии на их аналоги второй версии и передает такой "откорректированный" вызов ODBC-драйверу.

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

Для выполнения SQL-оператора создается дескриптор (идентификатор) оператора.

Для одного дескриптора соединения может быть создано несколько дескрипторов оператора.

По спецификации ODBC для каждого приложения драйверы могут поддерживать неограниченное число дескрипторов каждого типа. Однако конкретный драйвер может накладывать некоторые ограничения на количество дескрипторов.

Функция, используемая для создания дескриптора окружения, соединения, оператора или приложения, имеет следующее формальное описание:

SQLRETURN SQLAllocHandle( SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE * OutputHandlePtr);

Параметр HandleType ([Input]) указывает одной из следующих констант тип создаваемого дескриптора:

SQL_HANDLE_ENVSQL_HANDLE_DBCSQL_HANDLE_STMTSQL_HANDLE_DESC

Параметр InputHandle ([Input]) определяет контекст, в который добавляется создаваемый дескриптор. Если тип дескриптора SQL_HANDLE_ENV, то параметр InputHandle указывается константой SQL_NULL_HANDLE. При создании дескриптора среды параметр InputHandle задает дескриптор окружения, а для создания дескриптора оператора ( SQL_HANDLE_STMT ) и дескриптора приложения ( SQL_HANDLE_DESC ) - дескриптор соединения.

Идентификаторы, определяющие тип дескриптора и сам дескриптор, описаны в заголовочных файлах sql.h и sqltypes.h следующим образом:

/* sql.h */#if (ODBCVER >= 0x0300)#define SQL_HANDLE_ENV        1#define SQL_HANDLE_DBC        2#define SQL_HANDLE_STMT       3#define SQL_HANDLE_DESC         4#endif/* sqltypes.h */#if (ODBCVER >= 0x0300)#if defined(WIN32) || defined(_WIN64)typedef void* SQLHANDLE;#elsetypedef SQLINTEGER         SQLHANDLE;#endif /* defined(WIN32) || defined(_WIN64) */typedef SQLHANDLE               SQLHENV;typedef SQLHANDLE          SQLHDBC;typedef SQLHANDLE          SQLHSTMT;typedef SQLHANDLE          SQLHDESC;#else //ODBCVER < 0x0300#if defined(WIN32) || defined(_WIN64)typedef void*                    SQLHENV;typedef void*                    SQLHDBC;typedef void*                   SQLHSTMT;#elsetypedef SQLINTEGER         SQLHENV;typedef SQLINTEGER         SQLHDBC;typedef SQLINTEGER         SQLHSTMT;#endif /* defined(WIN32) || defined(_WIN64) */#endif /* ODBCVER >= 0x0300 */

Параметр OutputHandlePtr ([Output]) - это указатель на буфер, в который помещается создаваемая для дескриптора структура данных.

Функция SQLAllocHandle может возвращать следующие значения:

· SQL_SUCCESS - значение, определяемое ODBC API для указания успешного завершения функции;

· SQL_SUCCESS_WITH_INFO - значение, определяемое ODBC API для указания того, что функция выполнена успешно, но с уведомительным сообщением;

· SQL_INVALID_HANDLE - значение, определяемое ODBC API для указания, что задан неверный дескриптор;

· SQL_ERROR - значение, определяемое ODBC API для указания, что при выполнении функции произошла ошибка.

Для получения дополнительной информации об ошибке выполнения функции приложение-клиент может использовать данные из дескриптора, указанного параметром InputHandle.

Если при выполнении функции произошла ошибка (код возврата SQL_ERROR ) или функция выполнена, но с уведомительным сообщением (код возврата SQL_SUCCESS_WITH_INFO ), то значение SQLSTATE можно получить при вызове функции SQLGetDiagRec.

После создания дескриптора окружения следует установить атрибут SQL_ATTR_ODBC_VERSION. В противном случае при попытке создать дескриптор соединения произойдет ошибка.

Для приложений "согласованного стандарта" во время компиляции функция SQLAllocHandle заменяется на SQLAllocHandleStd. Основное отличие последней состоит в том, что при вызове этой функции с значением параметра HandleType, равным SQL_HANDLE_ENV, происходит установка атрибута окружения SQL_ATTR_ODBC_VERSION, равным SQL_OV_ODBC3 (так как приложения "согласованного стандарта" всегда являются приложениями ODBC 3.x и не требуют регистрации версии приложения).

 

Схема извлечения данных с использованием ODBC API

Для извлечения данных с использованием ODBC API сначала следует вызвать функцию, выполняющую SQL-оператор, который определяет формируемый результирующий набор. И только затем можно приступать к выборке данных.

ODBC API предоставляет два способа извлечения данных из результирующего набора:

· с предварительным связыванием полей результирующего набора с переменными основного языка программирования;

· прямая выборка каждого поля результирующего набора в указываемую переменную основного языка программирования.



2019-07-03 332 Обсуждений (0)
Схема извлечения данных с использованием ODBC API 0.00 из 5.00 0 оценок









Обсуждение в статье: Схема извлечения данных с использованием ODBC API

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (332)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)