我有一个名为" 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()
答案 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
块正确处理一次性对象。Reader.Read()
代替Reader.HasRows
可以获取当前记录的值。 SqlDataReader.Read()
方法将SqlDataReader推进到下一条记录。如果有更多记录,则返回true
,否则返回false
。
创建SqlDataReader时,默认位置是之前第一行,因此您必须调用Read()
方法来获取第一行的值。