从SQL服务器读取数据

时间:2016-03-20 13:02:11

标签: asp.net sql-server vb.net

我有一个名为" MyTable"的表。我想阅读" Active3"列当" ID3" column是指定的值。但我收到此错误:没有数据时无效尝试读取。

    Dim con1 As New SqlConnection(connectionString)
    con1.Open()
    Dim sql1 As String = String.Format("SELECT Active3,DateTime3,BuyDateTime3 FROM MyTable WHERE ID3='{0}'", Session("lblID8"))
    Dim command1 As SqlCommand = New SqlCommand(sql1, con1)
    Dim reader As SqlDataReader = command1.ExecuteReader

    If reader.HasRows Then
        Label4.Text = reader("Active3")
    else 

    End If
   con1.Close()

1 个答案:

答案 0 :(得分:2)

试试这个:

Using con1 As New SqlConnection(connectionString)
    con1.Open()
    Dim sql1 As String = "SELECT Active3,DateTime3,BuyDateTime3 FROM MyTable WHERE ID3=@ID3"
    Dim command1 As SqlCommand = New SqlCommand(sql1, con1)
    command1.Parameters.AddWithValue("@ID3", Session("lblID8"))
    Using reader As SqlDataReader = command1.ExecuteReader

    If reader.Read() Then
    Label4.Text = reader("Active3")
    else 

    End If
    End Using
End Using

注意:自从我编写VB.Net以来已经有一段时间了,这里可能会有一些错误。

解释:

  • Using块正确处理一次性对象。
  • 使用参数可防止Sql注入攻击
  • 在条件中使用Reader.Read()代替Reader.HasRows可以获取当前记录的值。

SqlDataReader.Read()方法将SqlDataReader推进到下一条记录。如果有更多记录,则返回true,否则返回false。 创建SqlDataReader时,默认位置是之前第一行,因此您必须调用Read()方法来获取第一行的值。