以下是我尝试的例子:
Dim cmd7 As New SqlCommand("Select CustomerName, ShipToAddress1, ShipToAddress2, ShipToCity, ShipToState, ShipToZip, ShipToCountry FROM CustomerList Where CustomerID = @CustomerID and DivisionID = 'TWD'", con)
cmd7.Parameters.Add("@CustomerID", SqlDbType.VarChar).Value = cboCustomer.Text
If con.State = ConnectionState.Closed Then con.Open()
Dim reader As SqlDataReader
reader = cmd7.ExecuteReader()
While reader.Read()
txtCustomer.Text = reader("CustomerName").ToString()
End While
reader.Close()
con.Close()
我进入调试模式并且它只是通过我的while语句并且永远不会进入并使txtcustomer.text = reader(" CustomerName")。Tostring()。为什么会这样?!
答案 0 :(得分:1)
它只是通过我的while语句
有两个可能的原因:
reader.Read()
的第一次调用返回False,可能是因为SELECT
命令没有找到任何记录。在这种情况下,代码将执行第一个条件检查的While
行,但没有别的。您会在While
上看到调试器,下一步将是reader.Close()
。Try
/ Catch
块,我们看不到它,它吞下了这个例外。那吞噬了这个例外。在这种情况下,调试器将停在reader = cmd7.ExecuteReader()
行,然后直接跳转到catch块。 其中,我更有可能找到选项#1。如果您使用调试器,我希望您能够看到选项#2。