logo
шпаргалки на іспит з бд (1)

8.24. Інтерфейс odbc: функціональна структура, блок-схема типового сеансу.

Блок-схема типової ODBC-програми.

Перш ніж реалізувати оператори SQL, застосування ODBC повинно виконати ряд дій, щоб під’єднатись до джерела даних. Типові дії звертання ODBC:

SQLAllocEnv(); Виділяє середовище ODBC

SQLAllocConnect(); Виділяє пам’ять для підключення

SQLConnect(); Завантажує драйвер, підключає до джерела

//Виконати оператори ODBC

SQLPrepare();

SQLExecute();

SQLBindCol();

SQLFetch();

…..

SQLAllocStmt(); Виділяє пам’ять для оператора SQL

SQLFreeStmt(); Звільнює пам’ять, виділену для оператора

SQLDisconnect(); Перерозподіляє драйвер, відключає від джерела

SQLFreeConnect(); Звільнює пам’ять, виділену для підключення

SQLFreeEnv(); Звільнює середовище, перериває сеанс

Виклик SQLAllocEnv() ініціалізує бібліотеку ODBC і повертає дескриптор типу SQLHENV. Дескриптор типу SQLHDBC, що повертається функцією SQLAllocConnect(), використовується в наступних звертаннях до функцій ODBC для посилання на певне підключення. Одне застосування може підтримувати декілька відкритих підключень. Функція SQLConnect() шляхом завантаження драйверу і підключення до джерела даних встановлює з’єднання. Це звертання до функції має варіанти; наприклад, виклик SQLDriverConnect(), можна використовувати для підключення до джерел даних, які не встановлюються за допомогою програми початкової установки ODBC. SQLBrowseConnect() дозволяє застосуванню циклічно продивлятися джерела даних. Виділяючи пам’ять для оператора SQL за допомогою функції SQLAllocStmt() на окремому кроці, ODBC забезпечує механізм, при якому оператори можуть конструюватися і використовуватися один раз і кілька разів перш, ніж виділена пам’ять. Після цих чотирьох звертань, як правило, застосування ODBC створює звертання до бази даних для виконання операторів SQL. Воно може використовувати функцію SQLPrepare() для підготовки (компіляції) оператора SQL для виконання і функцію SQLExecute() для дійсного його виконання. В якості альтернативи виклику SQLPrepare() та SQLExecute() застосування можуть використовувати функцію SQLExecDirect() для виконання оператора SQL в одній дії. Спочатку стовпчики зв’язуються з змінними програми за допомогою SQLBindCol, потім ці змінні зчитуються після виконання SQLFetch() над рядком таблиці. Якщо даних більше нема, SQLFetch() повертає SQL_NO_DATA_FOUND. В якості альтернативи використанню SQLBindCol() для пов’заних стовпців застосування можна використовувати функцію SQLGETDATA() для отримання даних з незв’язаних стовпців.

Коли його робота закінчена, застосування повинно звільнити задіяні ним ресурси ODBC.

В ODBC 3.0 функція SQLFreeHandle() використовується замість функцій ODBC 2.x SQLFreeEnv(), SQLFreeConnect(), SQLFreeHandle().