Книга: Обработка баз данных на Visual Basic®.NET

Объект Command

Аналогично объекту Connection, объект Command модели ADO.NET очень похож на своего предшественника из прежней модели ADO 2.X. Объект Command позволяет выполнять команды по отношению к источнику данных и получать возвращенные данные или результаты выполнения команд. 


РИС. 4.3. Состояние приложения DataProviderObjects до и после открытия подключения с помощью кода из листинга 4.1

Этот объект имеет следующие свойства: CommandText и СommandType для определения текста и типа фактической команды; Connection для указания подключения, используемого для выполнения команды; СommandTimeout для указания времени ожидания, по истечении которого команда отменяется и выдается сообщение об ошибке; Parameters для коллекции параметров команды; Transaction для указания транзакции, в которой используется данная команда.

Все три версии объекта Command (в пространствах имен OleDb, Sql, Odbc) имеют идентичные свойства и методы, за исключением того, что объект SqlCommand имеет дополнительный метод, которого нет у двух других вариантов этого объекта, а именно ExecuteXmlReader. Он использует преимущества SQL Server для автоматического возвращения данных в формате XML (если в запрос SQL добавлено предложение FOR XML).

НА ЗАМЕТКУ

Еще одно отличие между версиями объекта Command для разных провайдеров данных заключается в использовании значений свойства CommandType. Все они поддерживают значения Text и StoredProcedure, а объекты OleDbCommand и SqlCommand поддерживают еще одно, третье возможное значение — TableDirect. Это позволяет эффективно загружать все содержимое таблицы за счет установки значения TableDirect для свойства CommandType и имени таблицы для свойства CommandText.

Продолжим работу с формой, показанной на рис. 4.3.

1. Добавим еще одну кнопку сразу под кнопкой btnConnection, перетаскивая пиктограмму кнопки из панели элементов управления.

2. В окне свойств Properties установите значение btnCommand для свойства Name и значение Command для свойства Text.

3. Добавьте для кнопки код, показанный в листинге 4.2.

Листинг 4.2. Код открытия подключения к базе данных и подготовки объекта Command

Private Sub btnCommand_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles btnCommand.Click
 ' Создание экземпляра объекта Connection
 Dim cnn As SqlConnection = New SqlConnection( _
  "server=localhost;uid=sa;database=pubs")
 ' Создание экземпляра объекта Command
 Dim cmd As SqlCommand = New SqlCommand() txtResults.Clear()
 ' Открытие подключения cnn.Open()
 ' Указание подключения и текста команды
 cmd.Connection = cnn
 cmd.CommandType = CommandType.Text
 cmd.CommandText = _
  "Select au_lname, state from authors"
 ' Вывод текста команды
 txtResults.Text = "Command String:" & ControlChars.CrLf
 txtResults.Text = txtResults.Text & ControlChars.Tab & cmd.CommandText() & ControlChars.CrLf
End Sub

После запуска на выполнение приложения DataProviderObjects щелкните на кнопке Command, и в текстовом поле будет показана команда SQL, которая находится в свойстве CommandText объекта SqlCommand, а именно: SELECT au_lname, state FROM authors.

НА ЗАМЕТКУ

Многие классы платформы .NET Framework, а также созданные другими разработчиками классы перегружают конструкторы объектов. Иначе говоря, существует несколько способов создания нового экземпляра класса, где каждый конструктор принимает свойственный только ему набор аргументов. Таким образом можно выбрать версию, оптимальную для выполнения текущей задачи. Конструктор в листинге 4.2 для объекта SqlConnection отличается от го по умолчанию конструктора в листинге 4.1, в котором не используется никаких аргументов. Позже строке подключения присваивается объект SqlConnection с помощью свойства ConnectionString.

' Создание экземпляра объекта Connection
Dim cnn As SqlConnection = New SqlConnection()
' Создание строки подключения
cnn.ConnectionString = "server=localhost;uid=sa;database=pubs"

В листинге 4.2 используется конструктор объекта SqlConnection, который принимает строку подключения в качестве параметра. Это позволяет создать объект и сразу же указать для него строку подключения в одной строке кода.

' Создание экземпляра объекта Connection
Dim cnn SqlConnection = New SqlConnection("server=localhost;uid-sa;database=pubs")

Оглавление книги


Генерация: 0.591. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз