Класс CDaoDatabase

Представляет подключение к базе данных Access с помощью объектов ДОСТУПА (DAO). DAO поддерживается через Office 2013. Версия DAO 3.6 является окончательной и считается устаревшей.

Синтаксис

class CDaoDatabase : public CObject

Участники

Открытые конструкторы

Имя Описание
CDaoDatabase::CDaoDatabase Формирует объект CDaoDatabase. Вызов для Open подключения объекта к базе данных.

Открытые методы

Имя Описание
CDaoDatabase::CanTransact Возвращает ненулевое значение, если база данных поддерживает транзакции.
CDaoDatabase::CanUpdate Возвращает ненулевое значение, если CDaoDatabase объект обновляется (не только для чтения).
CDaoDatabase::Close Закрывает подключение к базе данных.
CDaoDatabase::Create Создает базовый объект базы данных DAO и инициализирует CDaoDatabase объект.
CDaoDatabase::CreateRelation Определяет новое отношение между таблицами в базе данных.
CDaoDatabase::D eleteQueryDef Удаляет объект querydef, сохраненный в коллекции QueryDefs базы данных.
CDaoDatabase::D eleteRelation Удаляет существующее отношение между таблицами в базе данных.
CDaoDatabase::D eleteTableDef Удаляет определение таблицы в базе данных. Это удаляет фактическую таблицу и все его данные.
CDaoDatabase::Execute Выполняет запрос действия. Вызов Execute запроса, возвращающего результаты, вызывает исключение.
CDaoDatabase::Get Подключение Возвращает строка подключения, используемый для подключения CDaoDatabase объекта к базе данных. Используется для ODBC.
CDaoDatabase::GetName Возвращает имя используемой базы данных.
CDaoDatabase::GetQueryDefCount Возвращает количество запросов, определенных для базы данных.
CDaoDatabase::GetQueryDefInfo Возвращает сведения о указанном запросе, определенном в базе данных.
CDaoDatabase::GetQueryTimeout Возвращает время ожидания операций запроса базы данных в секундах. Влияет на все последующие открытые, добавлять новые, обновлять и изменять операции и другие операции с источниками данных ODBC (только), такими как Execute вызовы.
CDaoDatabase::GetRecordsAffected Возвращает количество записей, затронутых последним обновлением, изменением или добавлением операции или вызовом Execute.
CDaoDatabase::GetRelationCount Возвращает количество связей, определенных между таблицами в базе данных.
CDaoDatabase::GetRelationInfo Возвращает сведения об указанной связи, определенной между таблицами в базе данных.
CDaoDatabase::GetTableDefCount Возвращает количество таблиц, определенных в базе данных.
CDaoDatabase::GetTableDefInfo Возвращает сведения о указанной таблице в базе данных.
CDaoDatabase::GetVersion Возвращает версию ядра СУБД, связанного с базой данных.
CDaoDatabase::IsOpen Возвращает ненулевое значение, если CDaoDatabase объект в настоящее время подключен к базе данных.
CDaoDatabase::Open Устанавливает подключение к базе данных.
CDaoDatabase::SetQueryTimeout Задает время ожидания времени ожидания операций запроса базы данных (только в источниках данных ODBC). Влияет на все последующие операции открытия, добавления новых, обновлений и удаления.

Открытые члены данных

Имя Описание
CDaoDatabase::m_pDAODatabase Указатель на базовый объект базы данных DAO.
CDaoDatabase::m_pWorkspace Указатель на объект CDaoWorkspace , содержащий базу данных и определяющий его пространство транзакций.

Замечания

Сведения о поддерживаемых форматах баз данных см. в функции-члене GetName . Один или несколько CDaoDatabase объектов могут быть активными в заданной рабочей области, представленной объектом CDaoWorkspace . Рабочая область поддерживает коллекцию открытых объектов базы данных, называемых коллекцией баз данных.

Использование

Объекты базы данных можно создавать неявно при создании объектов набора записей. Но также можно явно создавать объекты базы данных. Чтобы использовать существующую базу данных явным образом, CDaoDatabaseвыполните одно из следующих действий:

  • Создайте объект CDaoDatabase, передав указатель на открытый объект CDaoWorkspace.

  • Или создайте CDaoDatabase объект без указания рабочей области (MFC создает временный объект рабочей области).

Создание нового Microsoft Jet (. База данных MDB, создайте CDaoDatabase объект и вызовите ее функцию создания-члена . Не вызывайте OpenпослеCreate.

Чтобы открыть существующую базу данных, создайте CDaoDatabase объект и вызовите ее функцию-член Open .

Любой из этих методов добавляет объект базы данных DAO в коллекцию баз данных рабочей области и открывает подключение к данным. После создания объектов CDaoRecordset, CDaoTableDef или CDaoQueryDef для работы с подключенной базой данных передайте конструкторы для этих объектов указателем на CDaoDatabase объект. Завершив использование подключения, вызовите функцию-член Close и уничтожите CDaoDatabase объект. Close закрывает все наборы записей, которые вы ранее не закрыли.

Транзакции

Обработка транзакций базы данных предоставляется на уровне рабочей области— см . функции-члены BeginTrans, CommitTrans и Rollback класса CDaoWorkspace.

Подключения ODBC

Рекомендуемый способ работы с источниками данных ODBC — подключение внешних таблиц к Microsoft Jet (). База данных MDB.

Коллекции

Каждая база данных поддерживает собственные коллекции табличных данных, querydef, recordset и реляционных объектов. Класс CDaoDatabase предоставляет функции-члены для управления этими объектами.

Примечание.

Объекты хранятся в DAO, а не в объекте базы данных MFC. MFC предоставляет классы для объектов tabledef, querydef и recordset, но не для реляционных объектов.

Иерархия наследования

CObject

CDaoDatabase

Требования

Header: afxdao.h

CDaoDatabase::CanTransact

Вызовите эту функцию-член, чтобы определить, разрешает ли база данных транзакции.

BOOL CanTransact();

Возвращаемое значение

Ненулевое значение, если база данных поддерживает транзакции; в противном случае — 0.

Замечания

Транзакции управляются в рабочей области базы данных.

CDaoDatabase::CanUpdate

Вызовите эту функцию-член, чтобы определить, разрешает ли CDaoDatabase объект обновления.

BOOL CanUpdate();

Возвращаемое значение

Ненулевое CDaoDatabase значение, если объект разрешает обновления; в противном случае — значение 0, указывающее, что значение TRUE передано в bReadOnly при открытии CDaoDatabase объекта или что сама база данных доступна только для чтения. См. функцию Open member.

Замечания

Сведения об обновлении базы данных см. в разделе "Обновляемое свойство" в справке DAO.

CDaoDatabase::CDaoDatabase

Формирует объект CDaoDatabase.

CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);

Параметры

pWorkspace
Указатель на CDaoWorkspace объект, содержащий новый объект базы данных. Если принять значение NULL по умолчанию, конструктор создает временный CDaoWorkspace объект, использующий рабочую область DAO по умолчанию. Вы можете получить указатель на объект рабочей области с помощью элемента данных m_pWorkspace .

Замечания

После создания объекта при создании нового Microsoft Jet (. База данных MDB) вызывает функцию создания элемента объекта. Если вы открываете существующую базу данных, вызовите функцию open-члена объекта.

Завершив работу с объектом, необходимо вызвать ее функцию Close-члена , а затем уничтожить CDaoDatabase объект.

Возможно, вам удобно внедрить CDaoDatabase объект в класс документов.

Примечание.

Объект CDaoDatabase также создается неявно при открытии объекта CDaoRecordset без передачи указателя на существующий CDaoDatabase объект. Этот объект базы данных закрывается при закрытии объекта набора записей.

CDaoDatabase::Close

Вызовите эту функцию-член, чтобы отключиться от базы данных и закрыть все открытые наборы записей, tabledefs и querydefs, связанные с базой данных.

virtual void Close();

Замечания

Рекомендуется закрыть эти объекты самостоятельно, прежде чем вызывать эту функцию-член. CDaoDatabase Закрытие объекта удаляет его из коллекции баз данных в связанной рабочей области. Так как Close объект не уничтожается CDaoDatabase , можно повторно использовать объект, открыв одну и ту же базу данных или другую базу данных.

Внимание

Вызовите функцию-член обновления (если есть ожидающие изменения) и Close функцию-член для всех открытых объектов набора записей перед закрытием базы данных. Если вы выходите из функции, объявляющей CDaoRecordset или CDaoDatabase объекты в стеке, база данных закрывается, все ожидающие изменения теряются, все ожидающие транзакции откатываются и все ожидающие изменения данных теряются.

Внимание

Если вы пытаетесь закрыть объект базы данных во время открытия объектов набора записей или попытаться закрыть объект рабочей области во время открытия любых объектов базы данных, принадлежащих определенной рабочей области, эти объекты набора записей будут закрыты, и все ожидающие обновления или изменения будут откатированы. При попытке закрыть объект рабочей области во время открытия всех объектов базы данных, принадлежащих к нему, операция закрывает все объекты базы данных, принадлежащие конкретному объекту рабочей области, что может привести к закрытию объектов набора записей незакрытых. Если объект базы данных не закрыт, MFC сообщает о сбое утверждения в отладочных сборках.

Если объект базы данных определен за пределами область функции, и вы выходите из функции, не закрывая ее, объект базы данных будет оставаться открытым до явного закрытия или модуля, в котором он определен, не область.

CDaoDatabase::Create

Создание нового Microsoft Jet (. База данных MDB) вызывает эту функцию-член после создания CDaoDatabase объекта.

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszLocale = dbLangGeneral,
    int dwOptions = 0);

Параметры

lpszName
Строковое выражение, которое является именем создаваемого файла базы данных. Это может быть полный путь и имя файла, например C:\\MYDB. MDB". Необходимо указать имя. Если вы не предоставляете расширение имени файла, выполните следующие действия. Добавляется MDB. Если сеть поддерживает единообразное соглашение об именовании (UNC), можно также указать сетевой путь, например \MYSERVER\\MYSHARE\\MYDIR\\MYDB. Только Microsoft Jet (. Файлы базы данных MDB можно создать с помощью этой функции-члена. (В строковых литералах требуются двойные обратные косые буквы, так как "\" является escape-символом C++.)

lpszLocale
Строковое выражение, используемое для указания порядка сортировки для создания базы данных. Значение по умолчанию — dbLangGeneral. Возможны следующие значения:

  • dbLangGeneral Английский, немецкий, французский, португальский, итальянский и современный испанский

  • dbLangArabic Арабский

  • dbLangCyrillic Русский

  • dbLangCzech Чешский

  • dbLangDutch Нидерландский

  • dbLangGreek Греческий

  • dbLangHebrew Иврит

  • dbLangHungarian Венгерский

  • dbLangIcelandic Исландский

  • dbLangNordic Языки Северной Европы (только ядро СУБД Microsoft Jet версии 1.0)

  • dbLangNorwdan Норвежский и датский

  • dbLangPolish Польский

  • dbLangSpanish Традиционный испанский

  • dbLangSwedfin Шведский и финский

  • dbLangTurkish Турецкий

dwOptions
Целое число, указывающее один или несколько параметров. Возможны следующие значения:

  • dbEncrypt Создайте зашифрованную базу данных.

  • dbVersion10 Создайте базу данных с базой данных Microsoft Jet версии 1.0.

  • dbVersion11 Создайте базу данных с базой данных Microsoft Jet версии 1.1.

  • dbVersion20 Создайте базу данных с базой данных Microsoft Jet версии 2.0.

  • dbVersion30 Создайте базу данных с базой данных Microsoft Jet версии 3.0.

Если не указана константа шифрования, создается незашифрованная база данных. Можно указать только одну константу версии. Если не указана константа версии, создается база данных, использующая базу данных Microsoft Jet версии 3.0.

Внимание

Если база данных не зашифрована, это возможно, даже если вы реализуете безопасность пользователя или пароля, чтобы напрямую считывать двоичный файл диска, составляющий базу данных.

Замечания

Create создает файл базы данных и базовый объект базы данных DAO и инициализирует объект C++ . Объект добавляется в коллекцию баз данных связанной рабочей области. Объект базы данных находится в открытом состоянии; не вызывайте Open* после Create.

Примечание.

С помощью Createэтого приложения можно создать только Microsoft Jet (. Базы данных MDB). Невозможно создать базы данных ISAM или базы данных ODBC.

CDaoDatabase::CreateRelation

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

void CreateRelation(
    LPCTSTR lpszName,
    LPCTSTR lpszTable,
    LPCTSTR lpszForeignTable,
    long lAttributes,
    LPCTSTR lpszField,
    LPCTSTR lpszForeignField);

void CreateRelation(CDaoRelationInfo& relinfo);

Параметры

lpszName
Уникальное имя объекта реляционного объекта. Имя должно начинаться с буквы и может содержать не более 40 символов. Он может включать числа и символы подчеркивания, но не могут включать знаки препинания или пробелы.

lpszTable
Имя первичной таблицы в связи. Если таблица не существует, MFC создает исключение типа CDaoException.

lpszForeignTable
Имя внешней таблицы в связи. Если таблица не существует, MFC создает исключение типа CDaoException.

lAttributes
Длинное значение, содержащее сведения о типе связи. Это значение можно использовать для обеспечения целостности ссылок, помимо прочего. Оператор bitwise-OR () можно использовать для объединения любого из следующих значений (|если сочетание имеет смысл):

  • dbRelationUnique Отношение одно к одному.

  • dbRelationDontEnforce Связь не применяется (нет ссылочной целостности).

  • dbRelationInherited Связь существует в некурсной базе данных, содержащей две присоединенные таблицы.

  • dbRelationUpdateCascadeОбновления будет каскад (дополнительные сведения об каскадах см. в разделе "Замечания").

  • dbRelationDeleteCascade Удаление будет каскадным.

lpszField
Указатель на строку, завершающую значение NULL, содержащую имя поля в первичной таблице (с именем lpszTable).

lpszForeignField
Указатель на строку, завершающуюся значением NULL, содержащую имя поля во внешней таблице (с именем lpszForeignTable).

relinfo
Ссылка на объект CDaoRelationInfo , содержащий сведения о связи, которую требуется создать.

Замечания

Связь не может включать запрос или присоединенную таблицу из внешней базы данных.

Используйте первую версию функции, если отношение включает в себя одно поле в каждой из двух таблиц. Используйте вторую версию, если отношение включает несколько полей. Максимальное число полей в связи равно 14.

Это действие создает базовый объект отношения DAO, но это сведения о реализации MFC, так как инкапсуляция реляционных объектов MFC содержится в классе CDaoDatabase. MFC не предоставляет класс для отношений.

Если атрибуты реляционного объекта активируют каскадные операции, ядро СУБД автоматически обновляет или удаляет записи в одной или нескольких других таблицах при внесении изменений в связанные таблицы первичного ключа.

Например, предположим, что вы устанавливаете каскадное отношение удаления между таблицей Customers и таблицей Orders. При удалении записей из таблицы "Клиенты" записи в таблице "Заказы", связанной с этим клиентом, также удаляются. Кроме того, при создании каскадных связей удаления между таблицей Orders и другими таблицами записи из этих таблиц автоматически удаляются при удалении записей из таблицы Customers.

Дополнительные сведения см. в разделе "Метод CreateRelation" в справке DAO.

CDaoDatabase::D eleteQueryDef

Вызовите эту функцию-член, чтобы удалить указанный запрос — сохраненный запрос — из CDaoDatabase коллекции QueryDefs объекта.

void DeleteQueryDef(LPCTSTR lpszName);

Параметры

lpszName
Имя сохраненного запроса для удаления.

Замечания

После этого этот запрос больше не определен в базе данных.

Сведения о создании объектов querydef см. в классе CDaoQueryDef. Объект querydef связывается с определенным CDaoDatabase объектом при создании CDaoQueryDef объекта, передавая указатель на объект базы данных.

CDaoDatabase::D eleteRelation

Вызовите эту функцию-член, чтобы удалить существующее отношение из коллекции "Отношения" объекта базы данных.

void DeleteRelation(LPCTSTR lpszName);

Параметры

lpszName
Имя связи для удаления.

Замечания

После этого связь больше не существует.

Дополнительные сведения см. в разделе "Удаление метода" в справке DAO.

CDaoDatabase::D eleteTableDef

Вызовите эту функцию-член, чтобы удалить указанную таблицу и все его данные из CDaoDatabase коллекции TableDefs объекта.

void DeleteTableDef(LPCTSTR lpszName);

Параметры

lpszName
Имя табличного элемента для удаления.

Замечания

Затем эта таблица больше не определена в базе данных.

Примечание.

Не следует удалять системные таблицы.

Сведения о создании табличных объектов см. в разделе "Класс CDaoTableDef". Объект tabledef связывается с определенным CDaoDatabase объектом при создании CDaoTableDef объекта, передавая указатель на объект базы данных.

Дополнительные сведения см. в разделе "Удаление метода" в справке DAO.

CDaoDatabase::Execute

Вызовите эту функцию-член, чтобы выполнить запрос действия или выполнить инструкцию SQL в базе данных.

void Execute(
    LPCTSTR lpszSQL,
    int nOptions = dbFailOnError);

Параметры

lpszSQL
Указатель на строку, завершающуюся значением NULL, содержащую допустимую команду SQL для выполнения.

nOptions
Целое число, указывающее параметры, связанные с целостностью запроса. Оператор bitwise-OR (|) можно использовать для объединения любой из следующих констант (при условии, что сочетание имеет смысл, например, не сочетать dbInconsistent с dbConsistent):

  • dbDenyWrite Запретить разрешение на запись другим пользователям.

  • dbInconsistent (по умолчанию) Несогласованные обновления.

  • dbConsistent Согласованные обновления.

  • dbSQLPassThrough Сквозная передача SQL. Вызывает передача инструкции SQL в источник данных ODBC для обработки.

  • dbFailOnError Откат обновлений при возникновении ошибки.

  • dbSeeChanges Создайте ошибку во время выполнения, если другой пользователь изменяет данные, которые вы редактируете.

Примечание.

Если оба dbInconsistent и dbConsistent включены или не включены, результатом является значение по умолчанию. Описание этих констант см. в разделе "Метод выполнения" в справке DAO.

Замечания

Execute работает только для запросов действий или сквозных запросов SQL, которые не возвращают результаты. Он не работает для выбора запросов, возвращающих записи.

Сведения об определении и сведениях о запросах действий см. в разделах "Запрос действий" и "Метод выполнения" в справке DAO.

Совет

Учитывая синтаксическую правильную инструкцию SQL и соответствующие разрешения, Execute функция-член не завершится ошибкой, даже если ни одна строка не может быть изменена или удалена. Поэтому всегда используйте dbFailOnError параметр при использовании Execute функции-члена для выполнения запроса на обновление или удаление. Этот параметр приводит к тому, что MFC создает исключение типа CDaoException и откатывает все успешные изменения, если какие-либо из затронутых записей заблокированы и не могут быть обновлены или удалены. Обратите внимание, что вы всегда можете вызвать GetRecordsAffected количество затронутых записей.

Вызовите функцию-член GetRecordsAffected объекта базы данных, чтобы определить количество записей, затронутых последним Execute вызовом. Например, GetRecordsAffected возвращает сведения о количестве удаленных, обновленных или вставленных записей при выполнении запроса действия. Возвращаемое число не будет отражать изменения в связанных таблицах, когда каскадные обновления или удаления внесены в силу.

Execute не возвращает набор записей. Использование Execute запроса, который выбирает записи, приводит к возникновению исключения типа CDaoExceptionMFC. (Отсутствует ExecuteSQL функция-член, аналогичная CDatabase::ExecuteSQL.)

CDaoDatabase::Get Подключение

Вызовите эту функцию-член, чтобы получить строка подключения, используемую для подключения CDaoDatabase объекта к базе данных ODBC или ISAM.

CString GetConnect();

Возвращаемое значение

Строка подключения, если open был успешно вызван в источнике данных ODBC; в противном случае пустая строка. Для Microsoft Jet (. База данных MDB) всегда пуста, если вы не устанавливаете ее для использования с параметром dbSQLPassThrough , используемым с функцией-членом Execute или используемой при открытии набора записей.

Замечания

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

Примечание.

Использование классов DAO MFC для подключения к источнику данных через ODBC менее эффективно, чем подключение через подключенную таблицу.

Примечание.

Строка подключения используется для передачи дополнительных сведений в ODBC и некоторых драйверов ISAM по мере необходимости. Он не используется для . Базы данных MDB. Для базовых таблиц базы данных Microsoft Jet строка подключения является пустой строкой (""), за исключением случаев, когда вы используете его для сквозного запроса SQL, как описано выше в разделе "Возвращаемое значение".

Сведения о том, как создается строка подключения, см. в функции Open Member. После установки строка подключения в Open вызове его можно использовать для проверка параметра, чтобы определить тип, путь, идентификатор пользователя, пароль или источник данных ODBC.

CDaoDatabase::GetName

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

CString GetName();

Возвращаемое значение

Полный путь и имя файла базы данных в случае успешного выполнения; в противном случае — пустая CString.

Замечания

Если ваша сеть поддерживает единообразное соглашение об именовании (UNC), можно также указать сетевой путь, например "\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (В строковых литералах требуются двойные обратные косые буквы, так как "\" является escape-символом C++.)

Например, вы можете отобразить это имя в заголовке. Если при извлечении имени возникает ошибка, MFC создает исключение типа CDaoException.

Примечание.

Для повышения производительности при доступе к внешним базам данных рекомендуется подключить внешние таблицы баз данных к базе данных Microsoft Jet (). MDB) вместо подключения непосредственно к источнику данных.

Тип базы данных указывается файлом или каталогом, на который указывает путь, как показано ниже.

Pathname указывает на.. Тип базы данных
. MDB-файл База данных Microsoft Jet (Microsoft Access)
Каталог, содержащий . Файлы DBF База данных dBASE
Каталог, содержащий XLS-файл База данных Microsoft Excel
Каталог, содержащий . ФАЙЛЫ PDX База данных Paradox
Каталог, содержащий соответствующие форматированные текстовые файлы базы данных База данных форматирования текста

Для баз данных ODBC, таких как SQL Server и Oracle, строка подключения базы данных определяет имя источника данных (DSN), зарегистрированное ODBC.

CDaoDatabase::GetQueryDefCount

Вызовите эту функцию-член, чтобы получить количество запросов, определенных в коллекции QueryDefs базы данных.

short GetQueryDefCount();

Возвращаемое значение

Количество запросов, определенных в базе данных.

Замечания

GetQueryDefCount полезно, если необходимо выполнить цикл по всем запросам в коллекции QueryDefs. Сведения о заданном запросе в коллекции см. в разделе GetQueryDefInfo.

CDaoDatabase::GetQueryDefInfo

Вызовите эту функцию-член, чтобы получить различные типы сведений о запросе, определенном в базе данных.

void GetQueryDefInfo(
    int nIndex,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetQueryDefInfo(
    LPCTSTR lpszName,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Параметры

Nindex
Индекс предопределенного запроса в коллекции QueryDefs базы данных для поиска по индексу.

querydefinfo
Ссылка на объект CDaoQueryDefInfo , возвращающий запрошенные сведения.

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

  • имя AFX_DAO_PRIMARY_INFO (по умолчанию), тип

  • AFX_DAO_SECONDARY_INFO основные сведения плюс: дата создания, дата последнего обновления, возвращаемые записи, обновляемые

  • AFX_DAO_ALL_INFO основная и вторичная информация плюс: SQL, Подключение, ODBCTimeout

lpszName
Строка, содержащая имя запроса, определенного в базе данных, для поиска по имени.

Замечания

Предоставляются две версии функции, поэтому можно выбрать запрос по индексу в коллекции QueryDefs базы данных или по имени запроса.

Описание сведений, возвращаемых в querydefinfo, см. в структуре CDaoQueryDefInfo. Эта структура содержит элементы, соответствующие элементам информации, перечисленным выше в описании dwInfoOptions. Если вы запрашиваете один уровень информации, вы также получите все предыдущие уровни информации.

CDaoDatabase::GetQueryTimeout

Вызовите эту функцию-член, чтобы получить текущее количество секунд, чтобы разрешить до истечения времени ожидания последующих операций в подключенной базе данных.

short GetQueryTimeout();

Возвращаемое значение

Короткое целое число, содержащее значение времени ожидания в секундах.

Замечания

Операция может истекать из-за проблем с доступом к сети, чрезмерного времени обработки запросов и т. д. Хотя параметр действует, он влияет на все открытые, добавлять новые, обновлять и удалять операции с любыми наборами записей, связанными с этим CDaoDatabase объектом. Вы можете изменить текущий параметр времени ожидания, вызвав SetQueryTimeout. Изменение значения времени ожидания запроса для набора записей после открытия не изменяет значение набора записей. Например, последующие операции перемещения не используют новое значение. Значение по умолчанию изначально устанавливается при инициализации ядра СУБД.

Значение по умолчанию для времени ожидания запросов берется из реестра Windows. Если параметр реестра отсутствует, значение по умолчанию составляет 60 секунд. Не все базы данных поддерживают возможность задания значения времени ожидания запроса. Если задать значение времени ожидания запроса 0, время ожидания не происходит; и взаимодействие с базой данных может перестать отвечать. Это поведение может быть полезно во время разработки. Если вызов завершается ошибкой, MFC создает исключение типа CDaoException.

Дополнительные сведения см. в разделе "Свойство QueryTimeout" в справке DAO.

CDaoDatabase::GetRecordsAffected

Вызовите эту функцию-член, чтобы определить количество записей, затронутых последним вызовом функции-члена Execute .

long GetRecordsAffected();

Возвращаемое значение

Длинное целое число, содержащее количество затронутых записей.

Замечания

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

Дополнительные сведения см. в разделе "RecordsAffected Property" в справке DAO.

CDaoDatabase::GetRelationCount

Вызовите эту функцию-член, чтобы получить количество связей, определенных между таблицами в базе данных.

short GetRelationCount();

Возвращаемое значение

Количество связей, определенных между таблицами в базе данных.

Замечания

GetRelationCount полезно, если необходимо выполнить цикл по всем определенным отношениям в коллекции отношений базы данных. Чтобы получить сведения об заданном реляционном отношении в коллекции, см. раздел GetRelationInfo.

Чтобы проиллюстрировать концепцию отношения, рассмотрим таблицу "Поставщики" и таблицу Products, которая может иметь отношение "один ко многим". В этой связи один поставщик может предоставлять несколько продуктов. Другие отношения — "один к одному" и "многие ко многим".

CDaoDatabase::GetRelationInfo

Вызовите эту функцию-член, чтобы получить сведения об указанной связи в коллекции "Отношения" базы данных.

void GetRelationInfo(
    int nIndex,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetRelationInfo(
    LPCTSTR lpszName,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Параметры

Nindex
Индекс объекта реляционного отношения в коллекции "Отношения" базы данных для поиска по индексу.

relinfo
Ссылка на объект CDaoRelationInfo , возвращающий запрошенные сведения.

dwInfoOptions
Параметры, определяющие, какие сведения о связи для извлечения. Доступные параметры перечислены здесь вместе с тем, что они вызывают возврат функции о связи:

  • AFX_DAO_PRIMARY_INFO (по умолчанию), таблица, иностранная таблица

  • AFX_DAO_SECONDARY_INFO атрибуты, сведения о поле

Сведения о поле — это объект CDaoRelationFieldInfo , содержащий поля из основной таблицы, связанной с отношением.

lpszName
Строка, содержащая имя реляционного объекта, для подстановки по имени.

Замечания

Две версии этой функции предоставляют доступ по индексу или по имени. Описание сведений, возвращаемых в relinfo, см. в структуре CDaoRelationInfo. Эта структура содержит элементы, соответствующие элементам информации, перечисленным выше в описании dwInfoOptions. Если вы запрашиваете информацию на одном уровне, вы также получаете информацию на любом предыдущем уровне.

Примечание.

Если задать атрибуты объекта реляций для активации каскадных операций (dbRelationUpdateCascades или dbRelationDeleteCascades), ядро СУБД Microsoft Jet автоматически обновляет или удаляет записи в одной или нескольких других таблицах при внесении изменений в связанные таблицы первичного ключа. Например, предположим, что вы устанавливаете каскадное отношение удаления между таблицей Customers и таблицей Orders. При удалении записей из таблицы "Клиенты" записи в таблице "Заказы", связанной с этим клиентом, также удаляются. Кроме того, при создании каскадных связей удаления между таблицей Orders и другими таблицами записи из этих таблиц автоматически удаляются при удалении записей из таблицы Customers.

CDaoDatabase::GetTableDefCount

Вызовите эту функцию-член, чтобы получить количество таблиц, определенных в базе данных.

short GetTableDefCount();

Возвращаемое значение

Количество табличных данных, определенных в базе данных.

Замечания

GetTableDefCount полезно, если необходимо выполнить цикл по всем табличным файлам в коллекции TableDefs базы данных. Сведения о данной таблице в коллекции см. в разделе GetTableDefInfo.

CDaoDatabase::GetTableDefInfo

Вызовите эту функцию-член, чтобы получить различные виды сведений о таблице, определенной в базе данных.

void GetTableDefInfo(
    int nIndex,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetTableDefInfo(
    LPCTSTR lpszName,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Параметры

Nindex
Индекс объекта tabledef в коллекции TableDefs базы данных для поиска по индексу.

tabledefinfo
Ссылка на объект CDaoTableDefInfo , возвращающий запрошенные сведения.

dwInfoOptions
Параметры, определяющие, какие сведения о таблице необходимо получить. Доступные параметры перечислены здесь вместе с тем, что они вызывают возврат функции о связи:

  • AFX_DAO_PRIMARY_INFO (по умолчанию) имя, обновляемые, атрибуты

  • AFX_DAO_SECONDARY_INFO первичные сведения плюс: дата создания, дата последнего обновления, имя исходной таблицы, Подключение

  • AFX_DAO_ALL_INFO первичные и вторичные сведения плюс: правило проверки, текст проверки, число записей

lpszName
Имя объекта tabledef для поиска по имени.

Замечания

Предоставляются две версии функции, поэтому вы можете выбрать таблицу по индексу в коллекции TableDefs базы данных или по имени таблицы.

Описание сведений, возвращаемых в tabledefinfo, см. в структуре CDaoTableDefInfo. Эта структура содержит элементы, соответствующие элементам информации, перечисленным выше в описании dwInfoOptions. Если вы запрашиваете информацию на одном уровне, вы также получаете информацию для любых предыдущих уровней.

Примечание.

Параметр AFX_DAO_ALL_INFO предоставляет сведения, которые могут быть медленными для получения. В этом случае подсчет записей в таблице может занять очень много времени, если есть много записей.

CDaoDatabase::GetVersion

Вызовите эту функцию-член, чтобы определить версию файла базы данных Microsoft Jet.

CString GetVersion();

Возвращаемое значение

CString, указывающий версию файла базы данных, связанного с объектом.

Замечания

Возвращаемое значение представляет номер версии в форме "major.minor"; например, "3.0". Номер версии продукта (например, 3.0) состоит из номера версии (3), периода и номера выпуска (0). Версии: 1.0, 1.1, 2.0 и 3.0.

Дополнительные сведения см. в разделе "Свойство версии" в справке DAO.

CDaoDatabase::IsOpen

Вызовите эту функцию-член, чтобы определить, открыт ли CDaoDatabase объект в базе данных.

BOOL IsOpen() const;

Возвращаемое значение

Ненулевое CDaoDatabase значение, если объект открыт в данный момент; в противном случае — значение 0.

Замечания

CDaoDatabase::m_pDAODatabase

Содержит указатель на интерфейс OLE для объекта базы данных DAO, лежащего в CDaoDatabase основе объекта.

Замечания

Используйте этот указатель, если вам нужно напрямую получить доступ к интерфейсу DAO.

Сведения о вызове DAO напрямую см . в техническом примечание 54.

CDaoDatabase::m_pWorkspace

Содержит указатель на объект CDaoWorkspace , содержащий объект базы данных.

Замечания

Используйте этот указатель, если вам нужно напрямую получить доступ к рабочей области, например, чтобы получить указатели на другие объекты базы данных в коллекции баз данных рабочей области.

CDaoDatabase::Open

Чтобы инициализировать только что созданный CDaoDatabase объект, представляющий существующую базу данных, необходимо вызвать эту функцию-член.

virtual void Open(
    LPCTSTR lpszName,
    BOOL bExclusive = FALSE,
    BOOL bReadOnly = FALSE,
    LPCTSTR lpszConnect = _T(""));

Параметры

lpszName
Строковое выражение, которое является именем существующего Microsoft Jet (. Файл базы данных MDB. Если имя файла имеет расширение, это необходимо. Если сеть поддерживает соглашение об универсальном именовании (UNC), можно также указать сетевой путь, например \\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (В строковых литералах требуются двойные обратные косые буквы, так как "\" является escape-символом C++.)

Некоторые рекомендации применяются при использовании lpszName. Если это:

  • Ссылается на базу данных, которая уже открыта для эксклюзивного доступа другим пользователем, MFC создает исключение типа CDaoException. Ловушка этого исключения, чтобы сообщить пользователю, что база данных недоступна.

  • Является пустой строкой ("") и lpsz Подключение является ODBC;, отображается диалоговое окно со списком всех зарегистрированных имен источников данных ODBC, чтобы пользователь смог выбрать базу данных. Следует избегать прямых подключений к источникам данных ODBC; вместо этого используйте присоединенную таблицу.

  • В противном случае не ссылается на существующую базу данных или допустимое имя источника данных ODBC, MFC создает исключение типа CDaoException.

Примечание.

Дополнительные сведения о кодах ошибок DAO см. в разделе DAOERR. H-файл. Дополнительные сведения см. в разделе "Ошибки доступа к данным в ловушке" в справке DAO.

bExclusive
Логическое значение, которое имеет значение TRUE, если база данных должна быть открыта для эксклюзивного (не совместного доступа) и FALSE, если база данных должна быть открыта для общего доступа. Если этот аргумент не указан, база данных открывается для общего доступа.

bReadOnly
Логическое значение, равное TRUE, если база данных должна быть открыта для доступа только для чтения и FALSE, если база данных должна быть открыта для доступа на чтение и запись. Если этот аргумент не указан, база данных открывается для доступа на чтение и запись. Все зависимые наборы записей наследуют этот атрибут.

lpsz Подключение
Строковое выражение, используемое для открытия базы данных. Эта строка представляет собой аргументы подключения ODBC. Для предоставления исходной строки необходимо указать эксклюзивные и доступные только для чтения аргументы. Если база данных является базой данных Microsoft Jet (). MDB), эта строка пуста (""). Синтаксис значения по умолчанию — _T("") обеспечивает переносимость для Юникода, а также сборки ANSI приложения.

Замечания

Open связывает базу данных с базовым объектом DAO. Невозможно использовать объект базы данных для создания набора записей, табличного или запроса объектов до его инициализации. Open добавляет объект базы данных в коллекцию баз данных связанной рабочей области.

Используйте следующие параметры:

  • Если вы открываете Microsoft Jet (). База данных MDB), используйте параметр lpszName и передайте пустую строку для параметра lpsz Подключение или передайте строку пароля формы "; PWD=password", если база данных защищена паролем (. Только базы данных MDB).

  • Если вы открываете источник данных ODBC, передайте допустимые строка подключения ODBC в lpsz Подключение и пустую строку в lpszName.

Дополнительные сведения см. в разделе "Метод OpenDatabase" в справке DAO.

Примечание.

Для повышения производительности при доступе к внешним базам данных, включая базы данных ISAM и источники данных ODBC, рекомендуется подключить внешние таблицы баз данных к базе данных Microsoft Jet Engine (). MDB) вместо подключения непосредственно к источнику данных.

Возможно время ожидания подключения, если, например, узел СУБД недоступен. Если попытка подключения завершается ошибкой, Open вызывает исключение типа CDaoException.

Остальные примечания применяются только к базам данных ODBC:

Если база данных является базой данных ODBC, а параметры в Open вызове не содержат достаточно сведений для подключения, драйвер ODBC открывает диалоговое окно для получения необходимых сведений от пользователя. При вызове Openстрока подключения lpsz Подключение хранится в частном режиме и доступен путем вызова функции-члена Get Подключение.

Если вы хотите, перед вызовом Open можно открыть собственное диалоговое окно, чтобы получить информацию от пользователя, например пароль, а затем добавить эту информацию в строка подключения, на Openкоторую вы передаете. Или вы можете сохранить строка подключения, которую вы передаете (возможно, в реестре Windows), чтобы повторно использовать его при следующем вызове Open приложения к объектуCDaoDatabase.

Кроме того, можно использовать строка подключения для нескольких уровней авторизации входа (каждый для другого CDaoDatabase объекта) или передавать другие сведения, относящиеся к базе данных.

CDaoDatabase::SetQueryTimeout

Вызовите эту функцию-член, чтобы переопределить количество секунд по умолчанию, чтобы разрешить до последующих операций с подключенной базой данных время ожидания.

void SetQueryTimeout(short nSeconds);

Параметры

nSeconds
Количество секунд, разрешаемых до истечения времени ожидания попытки запроса.

Замечания

Операция может истекть из-за проблем с доступом к сети, чрезмерного времени обработки запросов и т. д. Перед открытием набора записей или перед вызовом SetQueryTimeout функций-членов AddNew, Update или Delete набора записей, если требуется изменить значение времени ожидания запроса. Этот параметр влияет на все последующие вызовы Open, и Delete вызовы всех наборов записей, UpdateAddNewсвязанных с этим CDaoDatabase объектом. Изменение значения времени ожидания запроса для набора записей после открытия не изменяет значение набора записей. Например, последующие операции перемещения не используют новое значение.

Значение по умолчанию для времени ожидания запроса составляет 60 секунд. Не все базы данных поддерживают возможность задания значения времени ожидания запроса. Если задать значение времени ожидания запроса 0, время ожидания не происходит; Связь с базой данных может перестать отвечать. Это поведение может быть полезно во время разработки.

Дополнительные сведения см. в разделе "Свойство QueryTimeout" в справке DAO.

См. также

Класс CObject
Диаграмма иерархии
Класс CDaoWorkspace
Класс CDaoRecordset
Класс CDaoTableDef
Класс CDaoQueryDef
Класс CDatabase
Класс CDaoException