Введение в программирование на C# 2.0

Способы создания команд


Известно три способа создания команд для манипулирования данными:

  • объявление и создание объекта команды непосредственно в программном коде с последующей настройкой этого объекта вручную. Следующие фрагменты кода демонстрируют этот способ: string cs = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + @"F:\SharpUser\CS.book\Rolls.db"; OleDbConnection cn = new OleDbConnection(cs); cn.Open(); OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cn; // Объект "Соединение" цепляется к команде!

Либо так:string cs = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + @"F:\SharpUser\CS.book\Rolls.db"; OleDbConnection cn = new OleDbConnection(cs); cn.Open(); OleDbCommand cmd = cn.CreateCommand();// Команда создается соединением!

  • использование инструментария, предоставляемого панелью ToolBox (вкладка Data). Объект соответствующего класса перетаскивается в окно дизайнера с последующей настройкой этого объекта. SqlCommand или OleDbCommand перетаскивается в окно конструктора со вкладки Data, при этом остается вручную задать свойства Connection, CommandText, CommandType (для определения типа команды, которая задается в свойстве CommandText). При этом свойство CommandType может принимать одно из трех значений: (1) Text – значение свойства CommandText воспринимается как текст команды SQL. При этом возможна последовательность допустимых операторов, разделенных точкой с запятой; (2) StoredProcedure – значение свойства CommandText воспринимается как имя существующей хранимой процедуры, которая будет исполняться при вызове данной команды; (3) TableDirect – при этом свойство CommandText воспринимается как непустой список имен таблиц, возможно, состоящий из одного элемента. При выполнении команды возвращаются все строки и столбцы этих таблиц;
  • размещение (путем перетаскивания) хранимой процедуры из окна Server Explorer в окно дизайнера. Объект "Команда" соответствующего типа при этом создается автоматически на основе любой хранимой процедуры. При этом новый объект ссылается на хранимую процедуру, что позволяет вызывать эту процедуру без дополнительной настройки.

  • Оба типа объектов "Команда" (SqlCommand и OleDbCommand) поддерживают три метода, которые позволяют исполнять представляемую команду:

    • ExecuteNonQuery – применяется для выполнения команд SQL и хранимых процедур, таких как INCERT, UPDATE, DELETE. С помощью этого метода также выполняются команды DDL – CREATE, ALTER. Не возвращает никаких значений.
    • ExecuteScalar – обеспечивает выбор строк из таблицы БД. Возвращает значение первого поля первой строки, независимо от общего количества выбранных строк.
    • ExecuteReader – обеспечивает выбор строк из таблицы БД. Возвращает неизменяемый объект DataReader, который допускает последовательный однонаправленный просмотр извлеченных данных без использования объекта DataAdapter.


    Кроме того, класс SqlCommand поддерживает еще один метод:

    • ExecuteXmlReader – обеспечивает выбор строк из таблицы БД в формате XML. Возвращает неизменяемый объект XMLReader, который допускает последовательный однонаправленный просмотр извлеченных данных.


    Назначение всех четырех методов – ИСПОЛНЕНИЕ НА ИСТОЧНИКЕ ДАННЫХ команды, представленной объектом команды.


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