При закрытии подписчики были переданы в рассылку "RFpro.ru: Программирование на C / C++" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
![]() |
![]() |
Главная | Новости | Статьи | Каталог | Софт | Регистрация | Поиск |
Новые статьи |
Свежие компьютерные новости |
21.12.2005
На Mail.Ru открылась автомобильная барахолка 21.12.2005 Intel и BMW подписали партнёрское соглашение 21.12.2005 Бритни Спирс возглавила рейтинг запросов Yahoo 21.12.2005 Кадр дня: Новый интерфейс Windows Vista 21.12.2005 Hitachi разрабатывает винчестер ёмкостью 5 Тб 21.12.2005 Первый ноутбук NEC на основе процессора Yonah 21.12.2005 Вышла обновленная бета-версия Windows Vista |
Источники данных ODBC |
Сокращение ODBC означает Open Database Connectivity, т. е. открытая связь с базой данных. Этот стандарт, разработанный фирмой Microsoft, который определяет интерфейс работы с базами данных. Очень важно, что система функций API этого интерфейса позволяет получать доступ к самым разным базам данных, начиная с баз Access и FoxPro и заканчивая удалённым доступом к серверам баз данных, таким как MS Server SQL 2000. Фирма Microsoft, контролирующая стандарт, поставляет набор драйверов для наиболее популярных баз данных. Другие фирмы поставляют на рынок драйверы для своих баз данных. Стандарт таков, что программа без перекомпиляции будет работать с самыми разными базами данных. Архитектура ODBC основана на использовании библиотек. На верхнем уровне находится библиотека ODBC32.DLL. Эта библиотека и предоставляет интерфейс прикладного программирования. Эта библиотека обращается к другим динамическим библиотекам, отвечающим за взаимодействие с конкретными базами данных. Все драйверы регистрируются в реестре по адресу: HKEY_CURRENT_USER\Software\ODBC\ODBC.INI (пользовательские DSN) HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI (системные DSN) HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI (драйверы ODBS) Добавление нового источника данныхКак уже было сказано, вся информация о драйверах хранится в реестре. И соответственно есть несколько способов создания нового драйвера. Можно через панель управления. Чтобы это сделать, надо открыть Панель управления/Администрирование/ Источники данных (ODBC). На самом деле эта программа Odbcad32.exe. Которую можно просто запускать и требовать создать источник данных. Но можно программно создать его. Для этого используется функция SQLConfigDataSource. Кроме того, в зависимости от заданных параметров функции можно удалять и изменять источники данных. Вот её описание: BOOL SQLConfigDataSource ( HWND hwndParent, WORD fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes ); Если функция выполнена удачно, то она возвращает TRUE, а если не удачно – FALSE. Параметр fRequest может содержать следующие значения: Вот параметры которые может содержать lpszAttributes: Параметры разделены между собой символом '\0', конец строки отмечается дополнительным символом '\0'. DSN=CustomDsn\0UID=username\0PWD=password\0DATABASE=CustomDataBase\0\0 Обязательным является имя DSN. Все остальные параметры могут быть запрошены при подключении к источнику данных. Хотя различные драйверы ODBC в этом отношении могут вести себя по-разному - например, для драйвера MS SQLServer обязательным параметром также является и имя сервера. Итак, приведу пример создания нового источника данных для Access: char* driver = "Microsoft Access Driver (*.mdb)"; char* params = "DSN=MyBaseDemo\0DefaultDir=C:\\\0DBQ=D:\\db1.mdb\0"; SQLConfigDataSource(NULL, ODBC_ADD_DSN, driver, params); Получение списка установленных источников и драйверов на компьютереТаких способов достаточно много. Но я опишу один из них. Он основан на использовании API функции SQLDataSources. SQLRETURN SQLDataSources ( SQLHENV EnvironmentHandle, SQLUSMALLINT Direction, SQLCHAR * ServerName, SQLSMALLINT BufferLength1, SQLSMALLINT * NameLength1Ptr, SQLCHAR * Description, SQLSMALLINT BufferLength2, SQLSMALLINT * NameLength2Ptr ); Для работы этой функции требуется файл sqlext.h. Вот сам код программы, которая получает список источников и драйверов: #include <sqlext.h> #pragma comment(lib, "odbc32") #pragma comment(lib, "odbccp32") #pragma comment(lib, "user32") #define MAX_BUF 1024 void main() { char datasrc[MAX_BUF] = {0}; char descrip[MAX_BUF] = {0}; short rdsrc = 0, rdesc = 0; SQLHENV hEnv; SQLRETURN ret; ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HENV, &hEnv); ret = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); SQLSMALLINT direction = SQL_FETCH_FIRST; while(1) { ret = SQLDataSources( hEnv, direction, (SQLTCHAR*)datasrc, MAX_BUF, &rdsrc, (SQLTCHAR*)descrip, MAX_BUF, &rdesc); if(SQL_NO_DATA == ret) break; direction = SQL_FETCH_NEXT; CharToOem(datasrc, datasrc); CharToOem(descrip, descrip); printf("* %s (%s)\n", datasrc, descrip); } SQLFreeHandle(SQL_HANDLE_ENV, hEnv); printf("\n"); while(1) { } } Вы при необходимости можете сузить диапазон выводимых значений, указав для direction в качестве стартового параметра SQL_FETCH_FIRST_USER для пользовательских источников данных и SQL_FETCH_FIRST_SYSTEM для системных. То, что описано в этой статье, лишь малая часть всех возможностей языка Visual C++ для работы с базами данных. К этой теме вернусь еще в некоторых рассылках. |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.visualc Архив рассылки |
Отписаться
Вспомнить пароль |
В избранное | ||