Выполнение 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.