2012-02-27 4 views
1

Этот код работает. Он основан на некотором коде, который я нашел в Интернете.Ищите лучший способ использования 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 

ответ

2

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

Edit: Пример Предполагая, что вы используете класс 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() 
+0

спасибо за ответ. Я посмотрю приложение Microsoft Access и посмотрю, смогу ли я извлечь уроки из него. Если у вас есть время, можете ли вы показать некоторые блоки кода, чтобы помочь дальше расширять разделение кода на другие методы? –

Смежные вопросы