Vb.net 为什么要跳过我的ELSE语句?
我一直试图使用IF/ELSE语句来查询我的MySQL数据库,但似乎不明白为什么VB会忽略ELSE语句。以下是代码-如有任何帮助,将不胜感激:Vb.net 为什么要跳过我的ELSE语句?,vb.net,Vb.net,我一直试图使用IF/ELSE语句来查询我的MySQL数据库,但似乎不明白为什么VB会忽略ELSE语句。以下是代码-如有任何帮助,将不胜感激: dbConn = New MySqlConnection("Server=" & FormLogin.ComboBoxServerIP.SelectedItem & ";Port=3306;Uid=qwertyuiop;Password=lkjhgfdsa;Database=zxcvbnm") Dim account As Bool
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,该代码将使用数据库中的数据填充我的表单。我不会说它跳过了else子句,但它可能会以您期望的不同方式评估IF条件
就我个人而言,我不喜欢将任何事情与真实相比较。如果您删除
=true
,它是否工作?这是因为您已经在阅读它:
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
支架自动关闭一次性物品。感谢您的帮助。这个建议很有魅力——多亏了你,我学到了一些新东西。但是在我的情况下,我如何使用USING-END-USING括号来自动打开和关闭连接呢?@KismetAgbasi-See。此外,还要学习使用参数。您的sql查询适合sql注入,参数将有助于防止这种情况。没有机会尝试您的建议删除“=true”。我尝试了LarsTech的另一个建议,效果很好——但无论如何还是要感谢Beth,我真的很感激。