Класс CDaoWorkspace

Управление именованным, защищенным паролем сеансом базы данных от входа до выхода одним пользователем. DAO поддерживается через Office 2013. Версия DAO 3.6 является окончательной и считается устаревшей.

Синтаксис

class CDaoWorkspace : public CObject

Участники

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

Имя Описание
CDaoWorkspace::CDaoWorkspace Создает объект рабочей области. После этого позвоните Create или Open.

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

Имя Описание
CDaoWorkspace::Append Добавляет только что созданную рабочую область в коллекцию рабочих областей ядра СУБД.
CDaoWorkspace::BeginTrans Начинает новую транзакцию, которая применяется ко всем базам данных, открытым в рабочей области.
CDaoWorkspace::Close Закрывает рабочую область и все объекты, которые он содержит. Ожидающие транзакции откатываются.
CDaoWorkspace::CommitTrans Завершает текущую транзакцию и сохраняет изменения.
CDaoWorkspace::CompactDatabase Сжимает (или дублирует) базу данных.
CDaoWorkspace::Create Создает новый объект рабочей области DAO.
CDaoWorkspace::GetDatabaseCount Возвращает количество объектов базы данных DAO в коллекции баз данных рабочей области.
CDaoWorkspace::GetDatabaseInfo Возвращает сведения о указанной базе данных DAO, определенной в коллекции баз данных рабочей области.
CDaoWorkspace::GetIniPath Возвращает расположение параметров инициализации ядра СУБД Microsoft Jet в реестре Windows.
CDaoWorkspace::GetIsolateODBCTrans Возвращает значение, указывающее, изолированы ли несколько транзакций, включающих один и тот же источник данных ODBC, путем принудительного подключения к источнику данных.
CDaoWorkspace::GetLoginTimeout Возвращает количество секунд до возникновения ошибки, когда пользователь пытается войти в базу данных ODBC.
CDaoWorkspace::GetName Возвращает определяемое пользователем имя объекта рабочей области.
CDaoWorkspace::GetUserName Возвращает имя пользователя, указанное при создании рабочей области. Это имя владельца рабочей области.
CDaoWorkspace::GetVersion Возвращает строку, содержащую версию ядра СУБД, связанную с рабочей областью.
CDaoWorkspace::GetWorkspaceCount Возвращает количество объектов рабочей области DAO в коллекции рабочих областей ядра СУБД.
CDaoWorkspace::GetWorkspaceInfo Возвращает сведения о указанной рабочей области DAO, определенной в коллекции рабочих областей ядра СУБД.
CDaoWorkspace::Idle Позволяет ядру СУБД выполнять фоновые задачи.
CDaoWorkspace::IsOpen Возвращает ненулевое значение, если рабочая область открыта.
CDaoWorkspace::Open Явно открывает объект рабочей области, связанный с рабочей областью DAO по умолчанию.
CDaoWorkspace::RepairDatabase Пытается восстановить поврежденную базу данных.
CDaoWorkspace::Rollback Завершает текущую транзакцию и не сохраняет изменения.
CDaoWorkspace::SetDefaultPassword Задает пароль, который ядро СУБД использует при создании объекта рабочей области без определенного пароля.
CDaoWorkspace::SetDefaultUser Задает имя пользователя, которое ядро СУБД использует при создании объекта рабочей области без определенного имени пользователя.
CDaoWorkspace::SetIniPath Задает расположение параметров инициализации ядра СУБД Microsoft Jet в реестре Windows.
CDaoWorkspace::SetIsolateODBCTrans Указывает, изолированы ли несколько транзакций, включающих один источник данных ODBC, путем принудительного подключения к источнику данных.
CDaoWorkspace::SetLoginTimeout Задает количество секунд до возникновения ошибки, когда пользователь пытается войти в источник данных ODBC.

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

Имя Описание
CDaoWorkspace::m_pDAOWorkspace Указывает на базовый объект рабочей области DAO.

Замечания

В большинстве случаев вам не потребуется несколько рабочих областей, и вам не нужно создавать явные объекты рабочей области; при открытии объектов базы данных и наборов записей они используют рабочую область DAO по умолчанию. Однако при необходимости можно выполнять несколько сеансов одновременно, создавая дополнительные объекты рабочей области. Каждый объект рабочей области может содержать несколько открытых объектов базы данных в собственной коллекции баз данных. В MFC рабочая область является главным образом диспетчером транзакций, указывая набор открытых баз данных в одном и том же пространстве транзакций.

Примечание.

Классы базы данных DAO отличаются от классов баз данных MFC на основе Подключение тивности открытой базы данных (ODBC). Все имена классов базы данных DAO имеют префикс CDao. Как правило, классы MFC на основе DAO более способны, чем классы MFC на основе ODBC. Классы на основе DAO получают доступ к данным через ядро СУБД Microsoft Jet, включая драйверы ODBC. Они также поддерживают операции языка определения данных (DDL), такие как создание баз данных и добавление таблиц и полей через классы без вызова DAO напрямую.

Возможности

Класс CDaoWorkspace предоставляет следующее:

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

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

  • Интерфейс ко многим свойствам базового ядра СУБД Microsoft Jet (см. статические функции-члены). Открытие или создание рабочей области или вызов статической функции-члена перед открытием или созданием инициализирует ядро СУБД.

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

Безопасность

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

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

Класс можно использовать для CDaoWorkspace :

  • Явно откройте рабочую область по умолчанию.

    Обычно использование рабочей области по умолчанию неявно — при открытии новых объектов CDaoDatabase или CDaoRecordset . Но вам может потребоваться явным образом получить доступ к нему, например для доступа к свойствам ядра СУБД или коллекции рабочих областей. См. раздел "Неявное использование рабочей области по умолчанию" ниже.

  • Создайте новые рабочие области. Вызовите добавление , если вы хотите добавить их в коллекцию рабочих областей.

  • Откройте существующую рабочую область в коллекции "Рабочие области".

Создание новой рабочей области, которая еще не существует в коллекции рабочих областей, описана в разделе "Создание члена". Объекты рабочей области не сохраняются каким-либо образом между сеансами подсистемы datababase. Если приложение связывает MFC статически, завершение приложения неинициализирует ядро СУБД. Если приложение связывается с MFC динамически, ядро СУБД неинициализируется при выгрузке библиотеки DLL MFC.

Явное открытие рабочей области по умолчанию или открытие существующей рабочей области в коллекции рабочих областей описано в разделе "Открыть функцию-член".

Закройте сеанс рабочей области, заключив рабочую область с помощью функции "Закрыть член". Close закрывает все базы данных, которые вы ранее не закрыли, отката всех незафиксированных транзакций.

Транзакции

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

Неявное использование рабочей области по умолчанию

MFC использует рабочую область DAO по умолчанию неявно в следующих обстоятельствах:

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

  • Аналогичным образом, если вы создаете CDaoRecordset объект без указания указателя на CDaoDatabase объект, MFC создает временный объект базы данных и, по расширению, временный объект рабочей области. Вы можете получить доступ к базе данных набора записей и косвенно ее рабочей области через CDaoRecordset член данных.

Другие операции

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

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

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

CObject

CDaoWorkspace

Требования

Header: afxdao.h

CDaoWorkspace::Append

Вызовите эту функцию-член после вызова Create.

virtual void Append();

Замечания

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

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

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

CDaoWorkspace::BeginTrans

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

void BeginTrans();

Замечания

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

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

  • Или вызовите функцию-член отката, чтобы отменить транзакцию.

Закрытие объекта рабочей области или объекта базы данных во время ожидания транзакции откатывает все ожидающие транзакции.

Если необходимо изолировать транзакции в одном источнике данных ODBC из другого источника данных ODBC, см . функцию-член SetIsolateODBCTrans .

CDaoWorkspace::CDaoWorkspace

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

CDaoWorkspace();

Замечания

После создания объекта C++ у вас есть два варианта:

  • Вызовите функцию Open member объекта, чтобы открыть рабочую область по умолчанию или открыть существующий объект в коллекции Workspaces.

  • Или вызовите функцию create member объекта, чтобы создать новый объект рабочей области DAO. Это явно запускает новый сеанс рабочей области, к которому можно обращаться через CDaoWorkspace объект. После вызова Createможно вызвать Add , если вы хотите добавить рабочую область в коллекцию рабочих областей ядра СУБД.

Сведения о том, когда необходимо явно создать CDaoWorkspace объект, см. в обзоре класса для CDaoWorkspace. Обычно рабочие области создаются неявно при открытии объекта CDaoDatabase без указания рабочей области или при открытии объекта CDaoRecordset без указания объекта базы данных. Объекты DAO MFC, созданные таким образом, используют рабочую область DAO по умолчанию, которая создается один раз и повторно используется.

Чтобы освободить рабочую область и содержащиеся в ней объекты, вызовите функцию close объекта рабочей области.

CDaoWorkspace::Close

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

virtual void Close();

Замечания

Закрытие открытого объекта рабочей области освобождает базовый объект DAO, а если рабочая область является членом коллекции Workspaces, удаляет ее из коллекции. Вызов — это хорошая Close практика программирования.

Внимание

Закрытие объекта рабочей области закрывает все открытые базы данных в рабочей области. Это приводит к тому, что все наборы записей, открытые в базах данных, также закрываются, а все ожидающие изменения или обновления откатываются. Дополнительные сведения см. в разделе CDaoDatabase::Close, CDaoRecordset::Close, CDaoTableDef::Close и CDaoQueryDef::Close.

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

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

CDaoWorkspace::CommitTrans

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

void CommitTrans();

Замечания

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

Внимание

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

При закрытии базы данных или рабочей области с ожидающих транзакций все транзакции откатываются.

Примечание.

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

CDaoWorkspace::CompactDatabase

Вызовите эту функцию-член для сжатия указанного Microsoft Jet (. База данных MDB.

static void PASCAL CompactDatabase(
    LPCTSTR lpszSrcName,
    LPCTSTR lpszDestName,
    LPCTSTR lpszLocale = dbLangGeneral,
    int nOptions = 0);

static void PASCAL CompactDatabase(
    LPCTSTR lpszSrcName,
    LPCTSTR lpszDestName,
    LPCTSTR lpszLocale,
    int nOptions,
    LPCTSTR lpszPassword);

Параметры

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

lpszDestName
Полный путь к создаваемой компактной базе данных. Вы также можете указать сетевой путь как с lpszSrcName. Нельзя использовать аргумент lpszDestName , чтобы указать тот же файл базы данных, что и lpszSrcName.

lpszPassword
Пароль, используемый для сжатия защищенной паролем базы данных. Обратите внимание, что если вы используете версию CompactDatabase , которая принимает пароль, необходимо указать все параметры. Кроме того, поскольку это параметр подключения, он требует специального форматирования, как показано ниже: ;P WD= lpszPassword. Например: ;P WD="Happy". (Требуется начальная точка с запятой.)

lpszLocale
Строковое выражение, используемое для указания порядка сортировки для создания lpszDestName. Если этот аргумент не указан, принимая значение dbLangGeneral по умолчанию (см. ниже), языковой стандарт новой базы данных совпадает со стандартом старой базы данных. Возможны следующие значения:

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

  • dbLangArabic Арабский

  • dbLangCyrillic Русский

  • dbLangCzech Чешский

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

  • dbLangGreek Греческий

  • dbLangHebrew Иврит

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

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

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

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

  • dbLangPolish Польский

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

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

  • dbLangTurkish Турецкий

nOptions
Указывает один или несколько параметров целевой базы данных lpszDestName. Если этот аргумент не задан, принимая значение по умолчанию, lpszDestName будет иметь то же шифрование и ту же версию, что и lpszSrcName. Можно объединить или dbDecrypt использовать dbEncrypt один из вариантов версии с помощью побитового оператора OR. Возможные значения, которые указывают формат базы данных, а не версию ядра СУБД:

  • dbEncrypt Шифрование базы данных во время сжатия.

  • dbDecrypt Расшифровка базы данных во время сжатия.

  • dbVersion10 Создайте базу данных, которая использует ядро СУБД Microsoft Jet версии 1.0 во время сжатия.

  • dbVersion11 Создайте базу данных, использующую ядро СУБД Microsoft Jet версии 1.1 при сжатия.

  • dbVersion20 Создайте базу данных, использующую ядро СУБД Microsoft Jet версии 2.0 во время сжатия.

  • dbVersion30 Создайте базу данных, которая использует ядро СУБД Microsoft Jet версии 3.0 во время сжатия.

Можно использовать dbEncrypt или dbDecrypt в аргументе параметров, чтобы указать, следует ли шифровать или расшифровывать базу данных по мере сжатия. Если вы опустите константу шифрования или dbDecryptdbEncryptвключаете оба и , lpszDestName будет иметь то же шифрование, что и lpszSrcName. Можно использовать одну из констант версий в аргументе параметров, чтобы указать версию формата данных для компактной базы данных. Эта константа влияет только на версию формата данных lpszDestName. Можно указать только одну константу версии. Если не указана константа версии, lpszDestName будет иметь ту же версию, что и lpszSrcName. Вы можете сжимать lpszDestName только до версии, которая совпадает или более поздней, чем lpszSrcName.

Внимание

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

Замечания

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

Внимание

Функция-член CompactDatabase неправильно преобразует полную базу данных Microsoft Access из одной версии в другую. Преобразуется только формат данных. Определяемые Корпорацией Майкрософт объекты, такие как формы и отчеты, не преобразуются. Однако данные правильно преобразуются.

Совет

Вы также можете скопировать CompactDatabase файл базы данных.

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

CDaoWorkspace::Create

Вызовите эту функцию-член, чтобы создать новый объект рабочей области DAO и связать его с объектом MFC CDaoWorkspace .

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszUserName,
    LPCTSTR lpszPassword);

Параметры

lpszName
Строка с до 14 символов, которые однозначно именуют новый объект рабочей области. Необходимо указать имя. Дополнительные сведения см. в разделе "Свойство name" в справке DAO.

lpszUserName
Имя пользователя владельца рабочей области. Сведения о требованиях см. в параметре lpszDefaultUser для функции-члена SetDefaultUser . Дополнительные сведения см. в разделе "Свойство UserName" в справке DAO.

lpszPassword
Пароль для нового объекта рабочей области. Пароль может содержать до 14 символов и может содержать любой символ, кроме ASCII 0 (NULL). В паролях учитывается регистр символов. Дополнительные сведения см. в разделе "Свойство пароля" в справке DAO.

Замечания

Общий процесс создания:

  1. Создайте объект CDaoWorkspace.

  2. Вызовите функцию-член объекта Create , чтобы создать базовую рабочую область DAO. Необходимо указать имя рабочей области.

  3. При необходимости вызовите Add , если вы хотите добавить рабочую область в коллекцию рабочих областей ядра СУБД. Вы можете работать с рабочей областью, не добавляя ее.

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

CDaoWorkspace::GetDatabaseCount

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

short GetDatabaseCount();

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

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

Замечания

GetDatabaseCount полезно, если необходимо выполнить цикл по всем определенным базам данных в коллекции баз данных рабочей области. Сведения о данной базе данных в коллекции см. в разделе GetDatabaseInfo. Обычное использование заключается в вызове GetDatabaseCount числа открытых баз данных, а затем использовать это число в качестве индекса цикла для повторяющихся вызовов GetDatabaseInfo.

CDaoWorkspace::GetDatabaseInfo

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

void GetDatabaseInfo(
    int nIndex,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetDatabaseInfo(
    LPCTSTR lpszName,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Параметры

Nindex
Отсчитываемый от нуля индекс объекта базы данных в коллекции баз данных рабочей области для поиска по индексу.

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

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

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

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

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

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

Замечания

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

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

CDaoWorkspace::GetIniPath

Вызовите эту функцию-член, чтобы получить расположение параметров инициализации ядра СУБД Microsoft Jet в реестре Windows.

static CString PASCAL GetIniPath();

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

CString, содержащий расположение реестра.

Замечания

Расположение можно использовать для получения сведений о параметрах ядра СУБД. Возвращаемые сведения — это имя подраздела реестра.

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

CDaoWorkspace::GetIsolateODBCTrans

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

BOOL GetIsolateODBCTrans();

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

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

Замечания

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

Некоторые серверы ODBC, такие как Microsoft SQL Server, не разрешают одновременные транзакции в одном соединении. Если для такой базы данных требуется несколько транзакций, задайте для свойства IsolateODBCTrans значение TRUE в каждой рабочей области, как только откроете ее. Это приводит к отдельному подключению ODBC для каждой рабочей области.

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

CDaoWorkspace::GetLoginTimeout

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

static short PASCAL GetLoginTimeout();

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

Количество секунд до возникновения ошибки при попытке входа в базу данных ODBC.

Замечания

Это значение представляет количество секунд до возникновения ошибки при попытке входа в базу данных ODBC. Значение loginTimeout по умолчанию — 20 секунд. Если значение LoginTimeout равно 0, время ожидания не происходит, а взаимодействие с источником данных может перестать отвечать.

При попытке войти в базу данных ODBC, например Microsoft SQL Server, подключение может завершиться ошибкой в результате сетевых ошибок или из-за отсутствия работы сервера. Вместо ожидания подключения по умолчанию 20 секунд можно указать время ожидания ядра СУБД до возникновения ошибки. Вход на сервер выполняется неявно в рамках ряда различных событий, таких как выполнение запроса во внешней базе данных сервера.

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

CDaoWorkspace::GetName

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

CString GetName();

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

CString, содержащий определяемое пользователем имя объекта рабочей области DAO.

Замечания

Имя полезно для доступа к объекту рабочей области DAO в коллекции рабочих областей ядра СУБД по имени.

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

CDaoWorkspace::GetUserName

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

CString GetUserName();

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

CString, представляющий владельца объекта рабочей области.

Замечания

Чтобы получить или задать разрешения для владельца рабочей области, вызовите DAO напрямую, чтобы проверка параметр свойства Permissions. Это определяет, какие разрешения есть у пользователя. Для работы с разрешениями требуется СИСТЕМА. MDA-файл.

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

CDaoWorkspace::GetVersion

Вызовите эту функцию-член, чтобы определить версию используемого ядра СУБД Microsoft Jet.

static CString PASCAL GetVersion();

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

CString, указывающий версию ядра СУБД, связанного с объектом.

Замечания

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

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

CDaoWorkspace::GetWorkspaceCount

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

short GetWorkspaceCount();

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

Количество открытых рабочих областей в коллекции рабочих областей.

Замечания

Это число не включает открытые рабочие области, которые не добавляются в коллекцию. GetWorkspaceCount полезно, если необходимо выполнить цикл по всем определенным рабочим областям в коллекции рабочих областей. Сведения о данной рабочей области в коллекции см. в разделе GetWorkspaceInfo. Обычное использование заключается в вызове GetWorkspaceCount числа открытых рабочих областей, а затем использовать это число в качестве индекса цикла для повторяющихся вызовов GetWorkspaceInfo.

CDaoWorkspace::GetWorkspaceInfo

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

void GetWorkspaceInfo(
    int nIndex,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetWorkspaceInfo(
    LPCTSTR lpszName,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Параметры

Nindex
Отсчитываемый от нуля индекс объекта базы данных в коллекции Workspaces для поиска по индексу.

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

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

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

  • AFX_DAO_SECONDARY_INFO первичные сведения плюс: имя пользователя

  • AFX_DAO_ALL_INFO основная и вторичная информация плюс: изоляция ODBCTrans

lpszName
Имя объекта рабочей области для поиска по имени. Имя — это строка с 14 символами, уникальными именами нового объекта рабочей области.

Замечания

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

CDaoWorkspace::Idle

Вызов Idle для предоставления ядра СУБД возможности выполнять фоновые задачи, которые могут не быть актуальными из-за интенсивной обработки данных.

static void PASCAL Idle(int nAction = dbFreeLocks);

Параметры

nAction
Действие, выполняемое во время простоя обработки. В настоящее время единственным допустимым действием является dbFreeLocks.

Замечания

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

Примечание.

Вызов Idle не требуется с базами данных, созданными с версией 3.0 ядра СУБД Microsoft Jet. Используется Idle только для баз данных, созданных с более ранними версиями.

Как правило, блокировки чтения удаляются, а данные в локальных объектах набора записей типа dynaset обновляются только при отсутствии других действий (включая движения мыши). При периодическом вызове Idleядро СУБД предоставляется время для выполнения задач фоновой обработки путем освобождения ненужных блокировок чтения. Указание dbFreeLocks константы в качестве аргумента задержки обработки до тех пор, пока не будут освобождены все блокировки чтения.

Эта функция-член не требуется в однопользовательских средах, если не запущено несколько экземпляров приложения. Функция-член Idle может повысить производительность в многопользовательской среде, так как она заставляет ядро СУБД сбрасывать данные на диск, освобождая блокировки памяти. Вы также можете освободить блокировки чтения, сделав операции частью транзакции.

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

CDaoWorkspace::IsOpen

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

BOOL IsOpen() const;

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

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

Замечания

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

CDaoWorkspace::m_pDAOWorkspace

Указатель на базовый объект рабочей области DAO.

Замечания

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

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

CDaoWorkspace::Open

Явно открывает объект рабочей области, связанный с рабочей областью DAO по умолчанию.

virtual void Open(LPCTSTR lpszName = NULL);

Параметры

lpszName
Имя открываемого объекта рабочей области DAO — строка с 14 символами, уникальными именами рабочей области. Примите значение NULL по умолчанию, чтобы явно открыть рабочую область по умолчанию. Требования к именованию см. в параметре lpszName для Create. Дополнительные сведения см. в разделе "Свойство name" в справке DAO.

Замечания

После создания CDaoWorkspace объекта вызовите эту функцию-член, чтобы выполнить одно из следующих действий:

  • Явно откройте рабочую область по умолчанию. Передайте ЗНАЧЕНИЕ NULL для lpszName.

  • Откройте существующий CDaoWorkspace объект, член коллекции Workspaces по имени. Передайте допустимое имя существующего объекта рабочей области.

Open помещает объект рабочей области в открытое состояние, а также инициализирует ядро СУБД, если оно еще не инициализировано для приложения.

Хотя многие CDaoWorkspace функции-члены могут вызываться только после открытия рабочей области, следующие функции-члены, которые работают с ядром СУБД, доступны после создания объекта C++, но перед вызовом Open:

CDaoWorkspace::RepairDatabase

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

static void PASCAL RepairDatabase(LPCTSTR lpszName);

Параметры

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

Замечания

Перед восстановлением базы данных необходимо закрыть базу данных, указанную lpszName. В многопользовательской среде другие пользователи не могут открыть lpszName во время восстановления. Если lpszName не закрыт или недоступно для монопольного использования, возникает ошибка.

Эта функция-член пытается восстановить базу данных, помеченную как возможно поврежденную неполную операцию записи. Это может произойти, если приложение с помощью ядра СУБД Microsoft Jet закрывается неожиданно из-за сбоя питания или аппаратного оборудования компьютера. Если вы завершите операцию и вызовите функцию Close-члена или вы покидаете приложение обычным образом, база данных не будет помечена как возможно поврежденная.

Примечание.

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

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

CDaoWorkspace::Rollback

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

void Rollback();

Замечания

Внимание

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

Если закрыть объект рабочей области без сохранения или отката ожидающих транзакций, транзакции автоматически откатываются. При вызове CommitTrans или Rollback без первого вызова BeginTrans возникает ошибка.

Примечание.

При запуске транзакции ядро СУБД записывает свои операции в файл, который хранится в каталоге, указанном переменной среды TEMP на рабочей станции. Если файл журнала транзакций исчерпает доступное хранилище на диске TEMP, ядро СУБД приведет к возникновению CDaoException ошибки MFC (ошибка DAO 2004). На этом этапе при вызове CommitTransнеопределенное число операций фиксируется, но оставшиеся незавершенные операции будут потеряны, и операция должна быть перезапущена. Вызов Rollback освобождает журнал транзакций и откатывает все операции в транзакции.

CDaoWorkspace::SetDefaultPassword

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

static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);

Параметры

lpszPassword
Пароль по умолчанию. Пароль может содержать до 14 символов и может содержать любой символ, кроме ASCII 0 (NULL). В паролях учитывается регистр символов.

Замечания

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

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

  1. CDaoWorkspace Создайте объект, но не вызывайтеCreate.

  2. Вызовите SetDefaultPassword и, если хотите, SetDefaultUser.

  3. Вызовите Create этот объект рабочей области или последующие, не указывая пароль.

По умолчанию для свойства DefaultUser задано значение admin, а для свойства DefaultPassword задана пустая строка ("").

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

CDaoWorkspace::SetDefaultUser

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

static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);

Параметры

lpszDefaultUser
Имя пользователя по умолчанию. Имя пользователя может быть 1 – 20 символов длиной и включать алфавитные символы, акцентированные символы, числа, пробелы и символы, за исключением: (кавычки / ), ( \ косая черта вперед), (обратная косая черта), [ ] (скобки), : (двоеточие), (канал), (знак меньше +> знака), (знак плюса = ), (знак равенства ; ), , (точка с запятой <| ), (вопросительный знак * ), (звездочка), ведущие пробелы и управляющие символы (ASCII 00 до ASCII 31). " Дополнительные сведения см. в разделе "Свойство UserName" в справке DAO.

Замечания

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

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

  1. CDaoWorkspace Создайте объект, но не вызывайтеCreate.

  2. Вызовите SetDefaultUser и, если хотите, SetDefaultPassword.

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

По умолчанию для свойства DefaultUser задано значение admin, а для свойства DefaultPassword задана пустая строка ("").

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

CDaoWorkspace::SetIniPath

Вызовите эту функцию-член, чтобы указать расположение параметров реестра Windows для ядра СУБД Microsoft Jet.

static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);

Параметры

lpszRegistrySubkey
Строка, содержащая имя подраздела реестра Windows для расположения параметров или параметров ядра СУБД Microsoft Jet, необходимых для устанавливаемых баз данных ISAM.

Замечания

Вызовируйте SetIniPath только в том случае, если необходимо указать специальные параметры. Дополнительные сведения см. в разделе "Свойство IniPath" в справке DAO.

Примечание.

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

Этот механизм можно использовать для настройки ядра СУБД с параметрами реестра, предоставленными пользователем. Область этого атрибута ограничена приложением и не может быть изменена без перезапуска приложения.

CDaoWorkspace::SetIsolateODBCTrans

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

void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);

Параметры

bIsolateODBCTrans
Передайте ЗНАЧЕНИЕ TRUE, если вы хотите начать изоляцию транзакций ODBC. Передайте значение FALSE, если вы хотите остановить изоляцию транзакций ODBC.

Замечания

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

Некоторые серверы ODBC, такие как Microsoft SQL Server, не разрешают одновременные транзакции в одном соединении. Если для такой базы данных требуется несколько транзакций, задайте для свойства IsolateODBCTrans значение TRUE в каждой рабочей области, как только откроете ее. Это приводит к отдельному подключению ODBC для каждой рабочей области.

CDaoWorkspace::SetLoginTimeout

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

static void PASCAL SetLoginTimeout(short nSeconds);

Параметры

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

Замечания

Это значение представляет количество секунд до возникновения ошибки при попытке входа в базу данных ODBC. Значение loginTimeout по умолчанию — 20 секунд. Если значение LoginTimeout равно 0, время ожидания не происходит, а взаимодействие с источником данных может перестать отвечать.

При попытке войти в базу данных ODBC, например Microsoft SQL Server, подключение может завершиться ошибкой в результате сетевых ошибок или из-за отсутствия работы сервера. Вместо ожидания подключения по умолчанию 20 секунд можно указать время ожидания ядра СУБД до возникновения ошибки. Вход на сервер выполняется неявно в рамках ряда различных событий, таких как выполнение запроса во внешней базе данных сервера. Значение времени ожидания определяется текущим параметром свойства LoginTimeout.

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

См. также

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