Visual Basic 6. Руководство разработчика

Выполнение SQL-выражений


В выполнении SQL-выражений ADO проявляют чрезвычайную гибкость. SQL-выражение можно выполнить с любым их трех объектов (Connection. Command и RecordSet). Каждый из них имеет свои преимущества и недостатки. Проведем их сравнительный анализ.

Запрос с помощью объекта Connection

Первый способ выполнить SQL-выражение — использовать метод Execute объекта Connection.

ADOConn.Execute "SELECT * FROM Products", numRecords, adCmdText

Второй (необязательный) аргумент указывает количество записей, затронутых запросом действия или возвращаемых запросом выбора. Последний аргумент (не обязательный) определяет, является первый аргумент SQL-выражением (aCmdText) или сохраненной процедурой (aCmdStoredProc).

Запрос с помощью объекта Command

Второй способ — создание объекта Command и вызов его метода Execute Объект Command содержит множество свойств. Но указать необходимо хотя бы свойства ActiveConnection (Текущее соединение) и CommandText (Текст ко­манды), как показано в следующем примере.

With ADOConn

.ActiveConnection = connectString

.CommandText = "SELECT * FROM Products", _

numRecords, adCmdText

.Execute

End With



Запрос с использованием объекта RecordSet

Наконец, можно использовать метод Open объекта RecordSet:

ADORSet.Open SQLStatement, connectString, RecordsetType, _

  LockType, CommandType

Аргумент

RecordType задает тип объекта RecordSet и имеет одно из следующих значений:

• adOpenDynamic;

• adOpenForwardOnly;

•  adOpenKeyset;

•  adOpenStatic.

Примечание

Объекты RecordSet этих типов объясняются в следующем параграфе.

Аргумент

LockType задает тип блокировки при обращении к базе данных нескольких пользователей одновременно. Его значением могут быть:

•  adLockBatchOptimistic;

•  adLockOptimistic;

•   adLockPessimistic;

• adLockReadOnly.

Примечание

Управление блокировкой и его типы в следующем параграфе рассмотрены подробнее.

Создадим объект RecordSet с использованием простого SQL-выражения.

Set ADORSet = "SELECT * FROM Products", connectString, _

adOpenForwardOnly, adLockReadOnly, adCmdText

Если необходимо выполнить SQL-выражение, оказывающее воздействие на большое количество записей или сохраненных процедур, то необходимо использовать объект Command. Он не создает курсор

(см. следующий параграф), и является един­ственным механизмом задания параметров. Избегайте использования SQL-выражений, выполняемых с помощью объекта RecordSet. Этот объект разрабатывался для приема наборов записей, а не для их создания. Кроме того, только объект Command поддерживает транзакции. Так что если требуется выполнить запрос на действие (который реализуется как транзакция), необходимо использовать объект Command.



Содержание раздела