Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Работа с объектами команд
Работа с объектами команд
Теперь, когда вы понимаете роль объекта соединения, мы выясним, как предъявить SQL-запрос базе данных. Тип SqlCommand (который получается из DbCommand) является объектом представлением SQL-запроса, имени таблицы или хранимой процедуры. Вид соответствующей команды указывается c помощью свойства CommandTyре, которое может принимать любое значение из перечня CommandType.
public enum System.Data.CommandType {
StoredProcedure,
TableDirect,
Text // Значение, используемое по умолчанию.
}
При создании объекта команды вы можете указать SQL-запрос или в качестве параметра конструктора, или напрямую через свойство CommandText. Также при создании объекта команд вы должны указать соединение, которое будет при этом использоваться. Это можно сделать либо через параметр конструктора, либо с помощью свойства Connection.
static void Main(string[] args) {
SqlConnection cn = new SqlConnection();
…
// Создание объекта команды с помощью аргументов конструктора.
string strSQL = "Select * From Inventory";
SqlCommand myCommand = new SqlCommand(strSQL, cn);
// Создание другого объекта команды с помощью свойств.
SqlCommand testCommand = new SqlCommand();
testCommand.Connection = cn;
testCommand.CommandText = strSQL;
…
}
Следует понимать, что в этот момент вы еще не предъявляете SQL-запрос базе данных Cars непосредственно, а только подготавливаете объект команды для использования в будущем. В табл. 22.7 приводятся описания еще нескольких членов типа DbCommand.
Таблица 22.7. Члены типа DbCommand
Член | Описание |
---|---|
CommandTimeout | Читает или устанавливает значение времени ожидания выполнения команды, прежде чем будет сгенерировано сообщение об ошибке. Значением по умолчанию является 30 секунд |
Connection | Читает или устанавливает значение DbConnection, которое используется данным экземпляром DbCommand |
Parameters | Получает коллекцию типов DbParameter, используемых для параметризованного запроса |
Cancel() | Отменяет выполнение команды |
ExecuteReader() | Возвращает объект DbDataReader поставщика данных для доступа к соответствующим данным режиме однонаправленного чтения |
ExecuteNonQuery() | Направляет текст команды в хранилище данных |
ExecuteScalar() | "Облегченная" версия метода ExecuteNonQuery(), предназначенная специально для запросов, возвращающих одиночные данные (например, как при запросе числа записей) |
ExecuteXmlReader() | В Microsoft SQL Server (2000 и более поздних версий) допускается возможность возвращения набора результатов в формате XML. Данный метод возвращает System.Xml.XmlReader, который позволяет обработать поступающий XML-поток |
Prepare() | Создает подготовленную (или скомпилированную) версию команды для источника данных. Вы, возможно, знаете, что готовый к использованию запрос выполняется быстрее, и это оказывается важно тогда, когда один и тот же запрос требуется выполнять многократно |
Замечание. Позже в этой главе будет показано, что в .NET 2.0 у объекта SqlCommand появилось несколько дополнительных членов, упрощающих задачу асинхронного взаимодействия с базами данных.
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- Работа с лентой
- Практическая работа 41. Графические объекты в документах Word
- Запуск из сценариев внешних программ
- Запуск службы
- Работа с объектами соединения
- Должны ли исключения быть объектами?
- Генерирование SQL-команд с помощью типов построителя команд
- Работа с объектами параметризованных команд
- Инструмент командной строки gbak
- Инструмент командной строки gfix
- Лекция 15. Работа с базами данных