Dim rayParameter As New OdbcParameter("@MyParam", OdbcType.Char, 2)

myParameter.Direction = ParameterDirection.Input

myParameter.Value = "CA"

cmd.Parameters.Add(myParameter)

А способ включения параметра команды с помощью метода Add выглядит иначе.

cmd.Parameters.Add("@MyParam", OdbcType.Char, 2)

cmd.Parameters("@MyParam").Direction = ParameterDirection.Input

cmd.Parameters("@MyParam").Value = "CA"

Второй метод короче и обычно предпочтительнее, если только нет особой причины для повторного использования объекта Parameter.

Для метода Add объекта Parameter обычно требуется указать имя, тип и длину параметра. Затем нужно указать направление передачи данных: Input, Output, InputOutput или ReturnValue. По умолчанию используется направление Input. Наконец, для присвоения значения параметру нужно использовать свойство Value объекта Parameter. Кроме того, для параметра можно указать другие свойства, например масштаб (свойство Scale), точность (свойство Precision) и допустимость использования неопределенных значений (свойство IsNullable).

При использовании провайдера данных SqlClient можно применять практически идентичный код. Единственным отличием являются префиксы Odbc вместо префиксов Sql, а также тип перечисления SqlDbType вместо OdbcType.

Dim myParameter As New SqlParameter("@MyParam", SqlDbType.Char, 2)

myParameter.Direction = ParameterDirection.Input

myParameter.Value = "CA"

cmd.Parameters.Add(myParameter)

Аналогично выглядит способ включения параметра команды с помощью метода Add.

cmd.Parameters.Add("@MyParam", SqlDbType.Char, 2)

cmd.Parameters("@MyParam").Direction = ParameterDirection.Input

cmd.Parameters("@MyParam").Value = "CA"

СОВЕТ

Для передачи параметру неопределенного значения можно использовать свойство Value объекта DBNull.

cmd.Parameters("@MyParam").Value = DBNull.Value

Измените код кнопки cmdButton, как показано в листинге 4.3. После запуска программы и щелчка на кнопке cmdButton в текстовом поле появится текст запроса, а также имя и значение параметра.

Листинг 4.3. Код подготовки и отображения команды и ее параметров

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 и объектов Parameter

 Dim cmd As SqlCommand = New SqlCommand()

 Dim prm As SqlParameter = New SqlParameter()

 txtResults.Clear()

  ' Открытие подключения cnn.Open()

 ' Указание подключения и текста команды

 cmd.Connection = cnn

 cmd.CommandType = CommandType.Text

 cmd.CommandText = _

  "Select au_lname, state from authors where state = @MyParam"

 ' Создание параметра и указание его значения

 cmd.Parameters.Add(New SqlParameter("@MyParam", SqlDbType.Char, 2))

 cmd.Parameters("@MyParam").Value = "CA"

 ' Вывод текста команды

 txtResults.Text = "Command String:" & ControlChars.CrLf

 txtResults.Text = txtResults.Text & ControlChars.Tab & _

  cmd.CommandText() & ControlChars.CrLf

 ' Вывод параметров команды

 txtResults.Text = txtResults.Text & "Command parameters:" & _

  ControlChars.CrLf

 For Each prm In cmd. Parameters

Перейти на страницу:

Похожие книги