CRecordset::Open
Открытие набора записей, извлечь таблицу или выполнить запрос, который представляет набор записей.
virtual BOOL Open(
UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
DWORD dwOptions = none
);
Параметры
nOpenType
Примите значение по умолчанию AFX_DB_USE_DEFAULT_TYPE, или использовать одно из следующих значений в перечисление OpenType:Набор записей CRecordset::dynaset a с двухнаправленной прокрутки. Членство и порядок записей определяется при открытии набора записей, но изменения, сделанные другими пользователями значениям данных отображаются после операции выборки. Динамические подмножества данных также называется keyset управляемые наборы записей.
Набор записей CRecordset::snapshot a статический с двухнаправленной прокрутки. Членство и порядок записей определяется при открытии набора записей; значения данных определяется при записи осуществляется удаленный доступ. Изменения, внесенные другими пользователями, не видны, пока набор записей не закрыт и затем открытии.
Набор записей CRecordset::dynamic a с двухнаправленной прокрутки. Изменения, внесенные другими пользователями, к членству, упорядочение и значения данных отображаются после операции выборки. Обратите внимание, что многие драйверы ODBC не поддерживает этот тип набора записей.
Набор записей CRecordset::forwardOnly " только для чтения с только передней прокрутки.
Для CRecordset, значение по умолчанию CRecordset::snapshot. Механизм значения по умолчанию позволяет мастеров Visual C++ C для взаимодействия с DAO и ODBC CRecordsetCDaoRecordset, которые имеют различные по умолчанию.
Дополнительные сведения о эти типы наборов записей см. в статье Набор записей (ODBC). Дополнительные сведения см. в статье «с помощью блока и прокручиваемые курсоры» в Windows SDK.
Предупреждение
Если запрошенный тип не поддерживается, платформа вызывает исключение.
lpszSQL
Указатель строки с одним из следующих:Указатель NULL.
Имя таблицы.
Выписка выбрать SQL (дополнительно с SQL WHERE или предложение ORDER BY ).
Выписка вызов, указывающее имя предопределенного запроса (хранимой процедуры). Обратите внимание, что не вставки пробела между фигурными скобками и ключевым словом вызов.
Дополнительные сведения о эту строку, просмотреть таблицу и описание роли ClassWizard в замечаниями.
Примечание
Порядок столбцов в результирующем наборе должен соответствовать порядку вызовов функции RFX или Bulk RFX в переопределении функции DoFieldExchange или DoBulkFieldExchange.
dwOptions
Битовая маска, которая может указать сочетание значений с ниже. Некоторые из них являются взаимоисключающими. По умолчанию используется значение none.CRecordset::none нет установленных параметров. Этот параметр является взаимоисключающим значение со всеми другими значениями. По умолчанию установлено записей можно обновить с помощью Правка или Удаление и позволяет добавить новые записи с AddNew. Обновляемость зависит от источника данных, так и в параметре nOpenType указано. Оптимизация для массовых добавлений недоступна. Групповая выборка строк не будет реализован. Удаленные записи не будут пропущены во время перехода набора записей. Закладки недоступно. Auto пакостный проверить поля реализован.
CRecordset::appendOnly не позволяет Изменить или Удалить в наборе записей. Разрешение AddNew. Этот параметр является взаимоисключающим с CRecordset::readOnly.
CRecordset::readOnly набор записей будет открыт только для чтения. Этот параметр является взаимоисключающим с CRecordset::appendOnly.
Использование CRecordset::optimizeBulkAdd подготовленное инструкции SQL оптимизировать добавление много записей одновременно. Область применения.только в том случае, если не использовать функции API ODBC SQLSetPos для обновления набора записей. Первое обновление определяет, какие поля, пакостные. Этот параметр является взаимоисключающим с CRecordset::useMultiRowFetch.
CRecordset::useMultiRowFetch реализует групповая выборка строк, чтобы разрешить несколько строк, который должен быть извлечен в одной операции выборки. Это дополнительная функция, созданной для повышения производительности; однако блочный обмен полей записей не поддерживается ClassWizard. Этот параметр является взаимоисключающим с CRecordset::optimizeBulkAdd. Обратите внимание, что если задано значение CRecordset::useMultiRowFetch, то параметр CRecordset::noDirtyFieldCheck будет включен автоматически (двойной буферизацией будет недоступна); только для вперед в наборах записей, параметр CRecordset::useExtendedFetch автоматически будет включен. Строка пакетной Дополнительные сведения о доступе к статье см. в разделе Набор записей. Пакетная выборка строк (ODBC).
Пропустить CRecordset::skipDeletedRecords все удаленные записи при перемещении по набору записей набор записей. Это становится уменьшение производительности в некоторых относительных выборках. Данный параметр недопустим для поиск только в наборах записей. При вызове Перемещение с параметром nRows, имеющим значение 0, и набор параметров CRecordset::skipDeletedRecords, Переместить утверждение. Обратите внимание, что CRecordset::skipDeletedRecords похоже на упаковке драйвера; это означает, что удаленные строки удаляются из набора записей. Однако если для записи пакетов драйвера, затем они следовали только те записи, которые удалении; он не пропустит запись удалена другими пользователями во время выполнения набор записей открыт. CRecordset::skipDeletedRecords пропустит строки, удаленные другими пользователями.
Закладки использования CRecordset::useBookmarks мая в наборе записей, если поддерживается. Извлечение данных закладок медленнее, но повышает производительность для перемещения данных. Недопустимый на поиск только для наборов записей. Дополнительные сведения см. в статье Набор записей. Закладки и абсолютное позиционирование (ODBC).
CRecordset::noDirtyFieldCheck отключается автоматическое пакостный проверить поля (двойной буферизацией). Это повышает производительность; однако необходимо вручную указать поля, как пакостный путем вызова функции-члены SetFieldDirty и SetFieldNull. Обратите внимание, что двойной буферизацией в классе CRecordset аналогична двойной буферизации в классе CDaoRecordset. Однако в CRecordset, нельзя включить двойную буферизацию на отдельных полей; или можно включить ее для всех полей или отключите его для всех полей. Обратите внимание, что если указан параметр CRecordset::useMultiRowFetch, то значение CRecordset::noDirtyFieldCheck будет включен автоматически; однако SetFieldDirty и SetFieldNull нельзя использовать с наборами записей, реализующими пакетную выборку строк.
CRecordset::executeDirect не использует подготовленное инструкции SQL. Для повышения производительности укажите этот параметр, если функцию-член Обновление никогда не вызывается.
CRecordset::useExtendedFetch реализует интерфейс SQLExtendedFetch вместо SQLFetch. Это предназначено для реализации групповой выборки строк на поиск только для наборов записей. Если указан параметр CRecordset::useMultiRowFetch, поиск только в наборе записей, CRecordset::useExtendedFetch будет включен автоматически.
Пользователь CRecordset::userAllocMultiRowBuffers выделяет буферы хранения данных. Этот параметр используется совместно с CRecordset::useMultiRowFetch, если требуется установка собственного хранилища; в противном случае платформа автоматически выбирает соответствующие хранилище. Дополнительные сведения см. в статье Набор записей. Пакетная выборка строк (ODBC). Обратите внимание, что при указании CRecordset::userAllocMultiRowBuffers без указания аргумента CRecordset::useMultiRowFetch приведет к ошибочном утверждении.
Возвращаемое значение
Значение не равно нулю, если объект CRecordset успешно открыт; в противном случае — значение 0, если CDatabase::Open (если называется), возвращает 0.
Заметки
Необходимо вызвать этот функцию-член, чтобы выполнить запрос, определенный набор записей. Перед вызовом Открыть, необходимо построить объект набора записей.
Подключение данного набора записей к источнику данных зависит от способа построения набор записей до вызова функции Открыть. Если указан объект CDatabase в конструктор, набора записей, не подключил к источнику данных этот функцию-член GetDefaultConnect используется для попытки открыть объект базы данных. При передаче NULL конструктору набора записей, конструктор создает объект CDatabase на Открыть и попытки подключения объекта базы данных. Дополнительные сведения о закрыть набор записей и подключение в следующих ситуациях изменение см. в разделе Закрыть.
Примечание
Доступ к источнику данных через объект CRecordset всегда доступен.В отличие от класса CDaoRecordset, нельзя использовать объект CRecordset для открытия источника данных с монопольным доступом.
При вызове Открыть, запрос, обычно выписка выбрать SQL, выделяет записи на основе критериев приведен в следующей таблице.
Значение параметра lpszSQL |
Выбранные записи определены следуют |
Пример |
---|---|---|
NULL |
Строка, возвращаемая GetDefaultSQL. |
|
Имя таблицы SQL |
Все столбцы таблицы списка в DoFieldExchange или DoBulkFieldExchange. |
"Customer" |
Предопределенное имя запроса (хранимых процедур) |
Столбцы определяются запрос для возврата. |
"{call OverDueAccts}" |
список списка столбцов таблицы FROMвыбрать |
Указанные столбцы из указанной таблицы. |
"SELECT CustId, CustName FROM Customer" |
Предупреждение
Обратите внимание, что нет дополнительного места вставки строки в SQL.Например, при вставке пробел между фигурными скобками и ключевым словом вызов, MFC будет истолкует строки SQL в качестве имени таблицы и включить его в оператора выбрать, которая приведет к тому, бросанной исключении.Аналогично, если предопределенный запрос использует параметр вывода, не вставьте пробел между фигурными скобками и «?» символ.Наконец, нет необходимости вставки пробела фигурными скобками в оператора вызов или перед ключевым словом выбрать в оператора выбрать.
Обычную процедуру NULL передать значение Открыть; в этом случае GetDefaultSQL вызывает метод Открыть. Если используется производный класс CRecordset, GetDefaultSQL содержит имя таблицы, указанное в ClassWizard. Вместо этого можно указать другие сведения в параметре lpszSQL.
Любые действия при передаче, конструкции Открыть окончательной строки SQL для запроса (строка может иметь SQL предложения WHERE и ORDER BY, добавленные в строке lpszSQL, которые прошли), а затем выполняется запрос. Можно проверить построения строку путем вызова GetSQL после вызова метода Открыть. Дополнительные сведения о том, как набор записей выполняется инструкция SQL и выделяет записей см. в статье Набор записей. Как наборы записей выбираются записей (ODBC).
Элементы данных полей класса набора записей привязаны к столбцам выбранных данных. Если записи возвращаются, то первая запись становится текущей.
Если требуется задать параметры для набора записей, такие как фильтрация и сортировка, укажите эти после построения объект набора записей, но до вызова функции Открыть. Если для обновления записей в наборе записей, после того как набор записей уже открыт, вызовите метод Повторный запрос.
Дополнительные сведения и дополнительные примеры см. в статье Набор записей (ODBC), Набор записей. Как наборы записей выбираются записей (ODBC) и Набор записей. Создание и закроющ наборы записей (ODBC).
Исключения
Этот метод может создавать исключения типа CDBException* и CMemoryException*.
Пример
Формы для отображения следующих примеров кода различные вызова Открыть.
// rsSnap, rsLName, and rsDefault are CRecordset or CRecordset-derived
// objects
// Open rs using the default SQL statement, implement bookmarks, and turn
// off automatic dirty field checking
rsSnap.Open(CRecordset::snapshot, NULL, CRecordset::useBookmarks |
CRecordset::noDirtyFieldCheck);
// Pass a complete SELECT statement and open as a dynaset
rsLName.Open(CRecordset::dynaset, _T("Select L_Name from Customer"));
// Accept all defaults
rsDefault.Open();
Требования
Header: afxdb.h