2012-08-30 61 views
1

我一直在尝试使用IF/ELSE语句来查询我的MySQL数据库,但似乎无法弄清楚为什么ELSE语句被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 

我的意图是,以取代这些URL与将填充我的形式与数据库中的数据代码中的“IF”的条款。

回答

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支架自动关闭您的一次性物品。

+2

+1打我吧 –

+1

我会upvote你的用户图标,如果我可以 – LittleBobbyTables

+0

感谢您的帮助。这个建议像魅力一样 - 感谢你,我学到了新的东西。但是,如何使用USING END USING括号 - 在我的情况下 - 自动打开和关闭连接? –

0

我不会说这是跳过你的其他条款,但它可能是评估你的条件不同,你期望。

就个人而言,我不喜欢任何东西比较真实。如果你放弃= true,它工作吗?

+0

没有机会尝试您的建议来删除'= true'。我尝试了另外一个来自LarsTech的建议,它的工作原理 - 但无论如何感谢Beth,我真的很感激它。 –

相关问题