Класс 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 на основе open Database Connectivity (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 . Но вам может потребоваться явный доступ к нему. Например, для доступа к свойствам ядра СУБД или коллекции рабочих областей. См. раздел "Неявное использование рабочей области по умолчанию" ниже.
Создайте новые рабочие области. Вызовите добавление , если вы хотите добавить их в коллекцию рабочих областей.
Откройте существующую рабочую область в коллекции "Рабочие области".
Создание новой рабочей области, которая еще не существует в коллекции рабочих областей, описана в разделе "Создание члена". Объекты рабочей области не сохраняются каким-либо образом между сеансами ядра СУБД. Если приложение связывает MFC статически, завершение приложения неинициализирует ядро СУБД. Если приложение связывается с MFC динамически, ядро СУБД неинициализируется при выгрузке библиотеки DLL MFC.
Явное открытие рабочей области по умолчанию или открытие существующей рабочей области в коллекции рабочих областей описано в разделе "Открыть функцию-член".
Закройте сеанс рабочей области, заключив рабочую область с помощью функции "Закрыть член". Close
закрывает все базы данных, которые вы не закрыли, и откатывает все незафиксированные транзакции.
Транзакции
DAO управляет транзакциями на уровне рабочей области; следовательно, транзакции в рабочей области с несколькими открытыми базами данных применяются ко всем базам данных. Например, если две базы данных имеют незафиксированные обновления и вызывают CommitTrans, все обновления фиксируются. Если вы хотите ограничить транзакции одной базой данных, для него требуется отдельный объект рабочей области.
Неявное использование рабочей области по умолчанию
MFC использует рабочую область DAO по умолчанию неявно в следующих обстоятельствах:
Если вы создаете новый
CDaoDatabase
объект, но не делаете это с помощью существующегоCDaoWorkspace
объекта, MFC создает для вас временный объект рабочей области, соответствующий рабочей области DAO по умолчанию. При этом для нескольких баз данных все объекты базы данных связаны с рабочей областью по умолчанию. Доступ к рабочей области базы данных можно получить черезCDaoDatabase
член данных.Аналогичным образом, если вы создаете
CDaoRecordset
объект без указания указателя наCDaoDatabase
объект, MFC создает временный объект базы данных и, по расширению, временный объект рабочей области. Вы можете получить доступ к базе данных набора записей и косвенно ее рабочей области черезCDaoRecordset
член данных.
Другие операции
Также предоставляются другие операции базы данных, например восстановление поврежденной базы данных или сжатие базы данных.
Сведения о вызове DAO напрямую и о безопасности DAO см . в техническом примечание 54.
Иерархия наследования
CDaoWorkspace
Требования
Заголовок: 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
в аргументе параметров, чтобы указать, следует ли шифровать или расшифровывать базу данных по мере сжатия. Если вы опустите константу шифрования или включаете оба dbDecrypt
и имеет lpszDestName
то же шифрование, что lpszSrcName
и dbEncrypt
. Можно использовать одну из констант версий в аргументе параметров, чтобы указать версию формата данных для компактной базы данных. Эта константа влияет только на версию формата 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.
Замечания
Общий процесс создания:
Вызовите функцию-член объекта
Create
, чтобы создать базовую рабочую область DAO. Необходимо указать имя рабочей области.При необходимости вызовите 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 напрямую, чтобы проверить параметр свойства "Разрешения"; Это определяет, какие разрешения у пользователя есть. Для работы с разрешениями требуется СИСТЕМА. 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 .
Чтобы использовать эту функцию-член, выполните указанные ниже действия.
CDaoWorkspace
Создайте объект, но не вызывайтеCreate
.Вызовите
SetDefaultPassword
и, если хотите, SetDefaultUser.Вызовите
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 .
Чтобы использовать эту функцию-член, выполните указанные ниже действия.
CDaoWorkspace
Создайте объект, но не вызывайтеCreate
.Вызовите
SetDefaultUser
и, если хотите, SetDefaultPassword.Вызов
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
Класс