使用executeReader()将数据库读入文本框

时间:2017-05-31 18:30:36

标签: sql-server vb.net

以下是我尝试的例子:

   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()。为什么会这样?!

1 个答案:

答案 0 :(得分:1)

  

它只是通过我的while语句

有两个可能的原因:

  1. reader.Read()的第一次调用返回False,可能是因为SELECT命令没有找到任何记录。在这种情况下,代码将执行第一个条件检查的While行,但没有别的。您会在While上看到调试器,下一步将是reader.Close()
  2. 这里有一个Try / Catch块,我们看不到它,它吞下了这个例外。那吞噬了这个例外。在这种情况下,调试器将停在reader = cmd7.ExecuteReader()行,然后直接跳转到catch块。
  3. 其中,我更有可能找到选项#1。如果您使用调试器,我希望您能够看到选项#2。