На этом шаге мы рассмотрим классы CDatabase и CDaoDatabase.
Обычно класс CDatabase служит для установки соединения с ODBC-источником данных типа SQL Server, a CDaoDatabase - с локальным источником данных, например СУБД Access.
Установка соединения проходит в два этапа:
В CDatabase::Ореn() передается DSN или строка подключения, а в CDaoDatabase::Ореn() - только имя файла БД. Также в эти функции допустимо передать параметр, задающий режим доступа - исключительный или только для чтения.
В случае ODBC применяйте функцию CDatabase::OpenEx(). Вот ее прототип:
CDatabase::OpenEx (LPCTSTR lpszConnectString, DWORD dwOptions = 0);
Параметр lpszConnectString - строка подключения с DSN. Если при установке соединения с источником не применяется авторизация Windows NT, то в строке подключения можно передать имя пользователя и пароль. Если значение lpszConnectString - NULL, то при попытке подключения система выведет диалоговое окно с запросом на ввод имени источника, имени пользователя и пароля.
Второй параметр, dwOptions, представляет собой битовую маску, задающую режим открытия источника данных. Принятое по умолчанию значение 0 определяет, что источник будет открыт в разделяемом режиме с доступом для записи. В этом параметре можно комбинировать значения, перечисленные в таблице 1.
Параметр dwOptions | Значение |
---|---|
CDatabase::openReadOnly | Открывает источник данных только для чтения |
CDatabase::useCursorLib | Загружает библиотеку курсоров ODBC |
CDatabase::noOdbcDialog | Запрещает отображение диалогового окна подключения независимо от того, достаточно ли информации в строке подключения |
CDatabase::forceOdbcDialog | Всегда отображает диалоговое окно подключения |
Ниже показано, как ОреnЕх() вызывается для подключения к DSN pubs от имени учетной записи sa с паролем, заданным в переменной password.
CDatabase db; db.OpenEx("DSN=pubs;UID=sa; PWD=password", 0);
Класс CDaoDatabase учитывает некоторые особенности Microsoft Jet. Например, он позволяет связать с объектом класса CDaoDatabase набор объектов CDaoTableDef, которые являются объектами определения таблиц и применяются для создания и корректировки таблиц в файлах БД, совместимых с Microsoft Jet.
Завершив работу с объектами базы данных, всегда закрывайте их функцией Close(). Соединение с источником данных - ценный системный ресурс, который не следует тратить зря.
На следующем шаге мы рассмотрим классы CRecordSet и CDaoRecordSet.