logo
Конспект по ООПиП ч

2)Конструирование

В эту категорию входят всего три ф-ции: констр-р, Open и Close, отвечающие за создание объекта, открытие и закрытие соед-я с источником данных.

CRecordset::CRecordset(CDatabase* pDatabase = NULL)

Служит для создания и инициализации объекта класса CRecordset. В кач-ве парам-ра в констр-р м.передать либо ук-ль на открытую БД (параметр pDatabase), либо NULL.

virtual BOOL CRecordset::Open (

UINT nOpenType=AFX_DB_USE_DEFAULT_TYPE,

LPCTSTR lpszSQL = NULL,

DWORD dwOptions = none)

При успешном выполнении функции возвращается ненулевое значение и 0 противном случае. Если получ-й результир-й набор не пустой, то текущей явл-ся первая запись.

Парам-р nOpenType определяет тип доступа к источнику данных и может принимать следующие значения:

CRecordset::dynasetрезультир-й набор с возможн-ю двунаправл-го просм-ра (измен-я, вносимые в БД другими польз-ми, отображ-ся сразу же).

CRecordset::snapshot статич. результир-й набор с возм-ю двунапр-го просмотра (изменения отображ-ся не сразу, а только после закрытия и повторного открытия peзультир-го набора).

CRecordset::dynamic – результир-й набор с возм-ю двунапр-го просмотра (изменения отобр-ся при выполн-и след-й операции).

CRecordset::forwardOnly результир-й набор "только для чтения" с возможностью просмотра "только вперед".

Парам-р lpszSQL — ук-ль на строку, содерж-ю одно из значений: NULL, имя табл, оператор SQL, или оператор CALL(запрос). Параметр dwOptions определяет комбинацию значений:

CRecordset::none – опции не установлены.

CRecordset::appendOnly нельзя редактировать и удалять записи результирующего набора, можно только добавлять.

CRecordset::readOnly результир-й набор открывается в режиме "только для чтения".

CRecordset::skipDeletedRecords пропускает все удаленные записи при перемещении по результирующему набору. Функцию CRecordset::Open следует вызывать для выполнения запроса, определяющего результирующий набор. Очевидно, что перед ее вызовом объект класса СRесоrdsеt должен быть создан. Более того, соединение с источником данных зависит от того, как именно он создан.

Если в кач-ве парам-ра был исп-н указ-ль на объект CDatabase, кот-й еще не соединен с источником данных, то ф-ция Open исп-т метод GetDefaultConnect для открытия объекта БД. Если в кач-ве парам-ра использ-ся NULL, то автоматич-ки создается объект класса CDatabase и осущ-ся попытка соединения с БД.

При вызове ф-ции Open выполн-ся запрос, обычно оператор SELECT, в рез-те чего выбир-ся записи на основе критериев.

virtual void CRecordset::Close() -- используется для закрыия результирующего набора.

Атрибуты результирующего набора:

BOOL CRecordset::CanAppend() -- позволяет определить, можно ли добавлять записи в результирующий набор. Да — если она возвращает ненулевое значение и нет — если 0.

BOOL CRecordset::CanBookmark() -- вызов этой ф-ции позволяет определить, можно ли отмечать записи в результирующем наборе с помощью закладок. Да — если она возвращает ненулевое значение, и нет— если 0.

BOOL CRecordset::CanRestart() – позв-т опред-ть, можно ли обновлять данные в результир-м наборе, исп-я для этого функцию Requery. Да— если она возвращает ненулевое значение, и нет — если 0.

BOOL CRecordset::CanUpdate() -- позволяет определить, можно ли обновлять записи в результирующем наборе. Да - если она возвращает ненулевое значение, и нет — если 0.

long CRecordset::GetRecordCount() -- позволяет определить размер результирующего набора. Она возвращает или число записей в результирующем наборе, или 0-если он не содержит записей, или -1,если число записей не может быть определено.

BOOL CRecordset::IsOpen ()

Позволяет определить, открыт ли уже результирующий набор. BOOL CRecordset::IsBOF ()

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

BOOL CRecordset::IsEOF ( )

Позволяет определить, является ли текущая запись последней в наборе данных. Возвращает ненулевое значение, если результирующий набор не содержит записей или указатель помещен за последней записью, и 0 — в противном случае. BOOL CRecordset::IsDeleted ( )

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

Операции обновления результирующего набора

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

virtual void CRecordset::AddNew ( )

Используется для подготовки новой записи к добавлению в результирующий набор. Все поля записи исходно устанавливаются в Null (в терминологии БД это означает " значение не задано"). Чтобы сохранить внесенные в эту пустую запись изменения в источнике данных, необходимо вызвать функцию Update.

virtual void CRecordset::Delete()

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

virtual void CRecoidset::Edit( )

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

virrual BOOL CRecordset::Update( )

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