
- •Работа с базой данных через odbc.
- •Общий обзор odbc
- •Хранение настроек об источнике данных odbc
- •Утилита администрирования
- •Реестр операционной системы
- •Функция sqlConfigDataSource()
- •Класс cDatabase
- •Установка соединения
- •Настройка файлового соединения
- •Настройка пользовательского соединения
- •Пример приложения для работы с бд
- •Функции IsOpen
- •Открытие набора записей
- •Получение информации о результате запроса
- •Записи в cRecordset
- •Перемещения по записям
- •Фильтры, сортировка cRecordset
- •Обмен данными с таблицей
- •Добавления новой записи в Базу данных.
- •Редактирование записей
- •Удаление записей
- •Поддержка транзакций
- •Настройка odbc и текущий каталог
- •Выполнение функций odbc api из класса cDatabase
Работа с базой данных через odbc.
Общий обзор odbc
ODBC - Open Database Connectivity это интерфейс доступа к базам данных в среде Windows. Для доступа к информации используются специальные драйвера. Разработчик любой базы данных может создать свой драйвер ODBC. Каждый драйвер со стороны пользователя имеет общий интерфейс (набор функций) для доступа к таблицам базы данных.
ODBC реализует интерфейс доступа к разным SQL совместимым базам данных.
Идея заключается в том, что приложение может получать доступ к совершенно разным базам данных, не меняя при этом код приложения.
Преимущества ODBC:
ODBC API функции одинаковые и не зависят от поставщика
SQL операторы (доступ к таблицам) могут быть сгенерированы на любой стадии при компиляции или выполнении.
Данные принимаются в программу в едином формате.
Для работы с источниками данных используют имена DNS - Data Source Name - именованный источник данных ODBC (псевдоним базы данных). Диспетчер использует информацию, связанную с именем, для доступа к БД. С именем связана следующая информация:
Местонахождение
Тип драйвера
Другие обязательные параметры
Существует три типа имен DNS:
Пользовательский
Системный
Файловый
В первом случае информация хранится в реестре Windows и привязана к конкретному пользователю, во втором – к конкретному компьютеру и каждый пользователь имеет доступ, в последнем случае информация хранится в файле, что облегчает перенос проекта с компьютера на компьютер.
Драйвера могут поддерживать три уровня грамматики SQL (минимальная грамматика поддерживается всеми драйверами):
Минимальная - выполнение команд Create Table, Drop Тable, Select, Insert,Update, Delete , выборка данных типа Char,VarChar или Long VarChar
Основная - дополнительно позволяет выполнять комнды Alter Table, Create Index, Drop Index, Create View, DropView, Grant, Revoke, Select (полная), выборка данных типа Decimal, Numeric, SmallInt, Integer, Real, Float, Double Precision
Расширенная - в дополнении к основному уровню позволяет использовать внешние соединения, поддержку позицирования, выборку данных типа Bit,TinyInt, BigInt, Binary, VarVariant, Long, VarBinary, Date, Time, TimeStamp, пакетные операторы SQL, вызов процедур
Хранение настроек об источнике данных odbc
Данные о источниках ODBC хранятся в реестре в разделе SOFTWARE/ODBC.
HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\
Настраивать ODBC можно следующими методами:
с помощью утилиты администрирования.
через реестр.
с использованием функции SQLConfigDataSource().
Утилита администрирования
Реестр операционной системы
Функция sqlConfigDataSource()
Функция имеет следующий прототип:
BOOL SQLConfigDataSource
(
HWND hwndParent, // Указатель на окно вызвавшее функцию
WORD fRequest, // Тип запроса
LPCSTR lpszDriver, // Пользовательское имя драйвера
LPCSTR lpszAttributes// атрибуты
);
Функция возвращает значение TRUE, если выполнена удачно и FALSE в противном случае.
Атрибут описывает тип команды и может быть следующим:
ODBC_ADD_DSN - добавление нового источника данных пользователя.
ODBC_CONFIG_DSN - выбор конфигурации существующего источника данных пользователя.
ODBC_REMOVE_DSN - удаление существующего источника данных пользователя.
ODBC_ADD_SYS_DSN - добавление нового источника данных системы.
ODBC_CONFIG_SYS_DSN - изменение существующего источника данных системы.
ODBC_REMOVE_SYS_DSN - удаление существующего источника данных системы.
ODBC_REMOVE_DEFAULT_DSN - удаление заданного по умолчанию раздела спецификации источника данных из системы
Пример приложения настройки ODBC драйвера
#include "stdafx.h"
#include "windows.h"
#include "odbcinst.h"
#include "iostream.h"
void main()
{
if (!SQLConfigDataSource(NULL,ODBC_ADD_DSN,
"Microsoft Excel Driver (*.xls)",
"DSN=New Excel Data Source\0"
"Description=New Excel Data Source\0"
"FileType=Excel\0"
"DataDirectory=C:\\ExcelData\0"
"MaxScanRows=20\0"))
cout << "Error config ODBC" << endl;
}
Пример использования ODBC дарайвера
#include "stdafx.h"
#include "afxwin.h"
#include "iostream.h"
#include "afxdb.h"
void main()
{
CDatabase cdbMyDB;
cdbMyDB.Open("New Excel Data Source");
cdbMyDB.ExecuteSQL(
"CREATE TABLE mydata (FirstName TEXT, LastName TEXT)");
cdbMyDB.ExecuteSQL(
"INSERT INTO mydata (FirstName,LastName) VALUES('Петров','Вася');");
cdbMyDB.Close();
}
Возможна настройка соединения ODBC при установке программного обеспечения (при выполнении программы). При этом требуется задать текущий каталог, номер версии и т.п. Список настроек определяется драйвером базы данных и может меняться от драйвера к драйверу. Каждый параметр задается в виде <параметр = значение> .
if (!SQLConfigDataSource(NULL,ODBC_ADD_DSN,
"Microsoft Excel Driver (*.xls)",
"DSN=New Excel Data Source\0"
"Description=New Excel Data Source\0"
"DriverId=278\0"
"DefaultDir=C:\\ExcelData\0"
"MaxScanRows=8\0"))
cout << "Error config ODBC" << endl;
Параметр DefaultDir устанавливает текущий каталог. DriverID - устанавливает версию драйвера.