我一直在尝试使用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”子句中的消息框替换为将使用数据库中的数据填充表单的代码。
答案 0 :(得分:3)
那是因为你已经在阅读它了:
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
括号自动关闭一次性物品。
答案 1 :(得分:0)
我不会说它正在跳过你的其他条款,但它可能会以不同的方式评估你的if条件。
就个人而言,我不喜欢将任何内容与True进行比较。如果您放弃= true
,它是否有效?