Ищете лучший способ использования ExecuteScalar()

Этот код работает. Он основан на коде, который я нашел в Интернете.

Можете ли вы сказать мне, является ли кодирование лучшим способом получить скалярное значение, и если есть лучший способ, можете ли вы показать примеры кодирования?

Dim objParentNameFound As Object

TextBoxParentsName.Text = ""

If TextBoxParentID.Text <> "" Then

    ' Display the parent's name using the parent ID. '
    Dim strSqlStatement As String = "Select FatherName " & _
                                      "From Parents " & _
                                     "Where ID = @SearchValue"

    ' Set up the sql command and lookup the parent. '
    Using objSqlCommand As SqlCommand = New SqlCommand(strSqlStatement, ObjConnection)

        With objSqlCommand

            ' Add SqlParameters to the SqlCommand. '
            .Parameters.Clear()
            .Parameters.AddWithValue("@SearchValue", TextBoxParentID.Text)

            ' Open the SqlConnection before executing the query. '
            Try
                ObjConnection.Open()

                Try
                    objParentNameFound = .ExecuteScalar()
                    If objParentNameFound <> Nothing Then

                        ' Display the parent name here. '
                        TextBoxParentsName.Text = objParentNameFound
                    End If

                Catch exSqlErrors As SqlException
                    MessageBox.Show("Sorry, I couldn't execute your query because of this error: " & _
                                    vbCrLf & vbCrLf & exSqlErrors.Message, _
                                    "Error")
                End Try
            Catch exErrors As Exception

                MessageBox.Show("Sorry, there was an error. Details follow: " & _
                                vbCrLf & vbCrLf & exErrors.Message, _
                                "Error")
            Finally
                ObjConnection.Close()
            End Try
        End With 
    End Using 
End If 

person Emad-ud-deen    schedule 27.02.2012    source источник


Ответы (1)


Блок Microsoft Access Application содержит несколько хороших примеров использования АДО.Нет. В частности, вы можете найти полезным то, как они организовали такие задачи, как ExecuteScalar(), в серию перегруженных методов, упрощающих вызов нужного вам процесса. Образец, который вы разместили, значительно выиграет от разделения проблем. Другими словами, возьмите код, который вы используете для создания соединения, команды и параметров, и сделайте его отдельным методом или методами. Это позволяет повторно использовать код без его копирования и вставки в кодовую базу. Это позволяет вашему вызывающему коду просто передавать параметры и привязывать результат к вашему текстовому полю или другим элементам управления.

Редактировать: пример Предполагая, что вы используете класс SqlHelper.vb, вы можете сделать что-то вроде следующего:

Dim searchValue As Integer = 1
Dim myConnectionString As String = "MyConnectionString"
Dim sqlStatement As String = "SELECT FatherName FROM Parents WHERE ID = @SearchValue"
Dim paramList(0) As SqlParameter
paramList(0) = New SqlParameter() With {.Value = searchValue, .ParameterName = "@SearchValue"}

TextBoxParentsName.Text = SqlHelper.ExecuteScalar(myConnectionString, CommandType.Text, sqlStatement, paramList).ToString()
person Tim Lentine    schedule 27.02.2012
comment
Спасибо за ответ. Я рассмотрю приложение Microsoft Access и посмотрю, смогу ли я извлечь из него уроки. Если у вас есть время, можете ли вы показать некоторые блоки кода, чтобы помочь в дальнейшем расширении разделения кода на другие методы? - person Emad-ud-deen; 27.02.2012