什么导致我的If语句被删除?

时间:2012-10-11 18:51:21

标签: mysql vb.net

我有一个嵌入式IF语句,应该在数据库查询后执行。但是,我在运行时注意到整个语句根本没有被评估(While dbData.Read()之后的那个)。我做错了什么?

这里的代码:

Private Sub ButtonNew_Click(ByVal sender As System.Object, ByVal e As     System.EventArgs) Handles ButtonNew.Click

If TextBoxSearch.Text = "" Then
        MessageBox.Show("Sorry, you must enter an ACCOUNT# before proceeding!")
        TextBoxSearch.Focus()
    Else
        Try
            Dim dbConn As MySqlConnection
            dbConn = New MySqlConnection("Server=" & FormLogin.ComboBoxServerIP.SelectedItem & ";Port=3306;Uid=parts;Password=parts;Database=accounting")
            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 Then
                    'MessageBox.Show("Customer record already exists!")
                    Call recordExists()
                    account = False
                    Call lockForm()
                    TextBoxSearch.Focus()
                    Me.Refresh()
                Else
                    'dbData.Close()
                    account = True
                    TextBoxAccount.Text = TextBoxSearch.Text
                    TextBoxAccount.BackColor = Color.LightGray
                    TextBoxAccount.TabStop = False
                    Call unlockForm()
                    TextBoxLastName.Focus()
                    ButtonSubmit.Visible = True
                    Me.Refresh()
                End If
            End While
            dbData.Close()
            dbCmd.Dispose()
            dbAdapter.Dispose()
            dbConn.Close()
        Catch ex As Exception
            MessageBox.Show("A DATABASE ERROR HAS OCCURED" & vbCrLf & vbCrLf & ex.Message & vbCrLf & _
                        vbCrLf + "Please report this to the IT/Systems Helpdesk at Ext 131.")
        End Try
    End If

End Sub

1 个答案:

答案 0 :(得分:1)

如果dbData.Read()返回False,那么它将不会进入您的循环,因此If语句将不会被执行。如果没有要读取的行,则Read始终返回False,因此If语句在其所在位置无用。您需要移动If语句,以便while循环位于If块内:

If dbData.HasRows Then
    While dbData.Read()
        ' ...
    End While
Else
    ' ...
End If
相关问题