我一直在尝试使用IF/ELSE语句来查询我的MySQL数据库,但似乎不明白为什么VB忽略了ELSE语句。以下是代码-任何帮助都将不胜感激:
dbConn = New MySqlConnection("Server=" & FormLogin.ComboBoxServerIP.SelectedItem & ";Port=3306;Uid=qwertyuiop;Password=lkjhgfdsa;Database=zxcvbnm")
Dim account As Boolean = True
If dbConn.State = ConnectionState.Open Then
dbConn.Close()
End If
dbConn.Open()
Dim dbQuery As String = "SELECT * FROM customer WHERE accountNumber = '" & TextBoxSearch.Text & "';"
Dim dbData As MySqlDataReader
Dim dbAdapter As New MySqlDataAdapter
Dim dbCmd As New MySqlCommand
dbCmd.CommandText = dbQuery
dbCmd.Connection = dbConn
dbAdapter.SelectCommand = dbCmd
dbData = dbCmd.ExecuteReader
While dbData.Read()
If dbData.HasRows() = True Then
MessageBox.Show("Customer Account Found!")
Else
MessageBox.Show("No Customer Records Found! Please try again!")
dbData.Close()
End If
End While我的目的是将"IF“子句中的messagebox替换为用数据库中的数据填充我的表单的代码。
发布于 2012-08-31 03:55:04
那是因为你已经在读它了:
While dbData.Read()
If dbData.HasRows() = True Then
MessageBox.Show("Customer Account Found!")
Else
MessageBox.Show("No Customer Records Found! Please try again!")
dbData.Close()
End If
End While如果你的阅读器没有记录,整个While循环将被跳过。
换一种方式试试:
If dbData.HasRows Then
While dbData.Read()
'looping through records here
End While
Else
MessageBox.Show("No Customer Records Found! Please try again!")
End If还有一点是必须注意的:不要让你的关系保持开放和活跃。使用Using End Using支架自动关闭您的一次性物品。
发布于 2012-08-31 03:54:53
我不会说它跳过了else子句,但它可能会以不同于您期望的方式计算if条件。
就我个人而言,我不喜欢将任何东西与True进行比较。如果您丢弃了= true,它还能工作吗?
https://stackoverflow.com/questions/12204375
复制相似问题