首页 > 解决方案 > 阅读器 if 和 else 语句

问题描述

我正在用 Visual Basic 练习编程我在 Visual Basic 中有 2 种形式。第一个表单有一个命令按钮,它将显示来自第二个表单的输入数据第二个表单有一个文本框,我需要在其中输入数据并保存它。

我以第二种形式输入的数据将其存储在 MySQL 中

第一个表格有一个名为“显示我的成绩”的命令按钮,如果我点击它,我想显示表格 2 并向我显示成绩。但是如果我没有输入任何成绩然后我点击“显示我的成绩”按钮它会崩溃我不知道错误。我尝试使用代码“如果 READER.HasRows Then: 但它仍然无法正常工作,如果 READER.Read then: else MessageBox.Show(“目前没有成绩输入”) 请帮忙。

这是表格 1 中命令按钮中的当前代码。

Me.Visible = False
Form2.Show()


    MySqlConn = New MySqlConnection
        MySqlConn.ConnectionString = "server=localhost;userid=root;password=qwerty;database=ssg"
        Dim COMMAND As New MySqlCommand
        Dim READER As MySqlDataReader
        MySqlConn.Open()
        COMMAND.Connection = MySqlConn
        COMMAND.CommandText = "select grade from gradetable"
        READER = COMMAND.ExecuteReader
        Form2.TextBox1.Text = READER("grade")                             
        End Sub

只要我先输入成绩,它就可以工作,但是如果我没有输入任何成绩,它就会崩溃。

如果我点击表格 1 中的“显示我的成绩”按钮而没有在表格 2 中输入成绩,我只想显示一条消息“您目前还没有成绩”

请帮忙。

标签: mysqlvb.net

解决方案


  1. 具有匹配 End Using 的 Using 语句。这是代替 Dim。即使出现错误,它也能确保您的对象被正确关闭和处理。这对于应尽快关闭的连接尤其重要。

  2. 我使用连接的构造函数传入连接字符串。设置属性很好。这只是节省了一行代码。

  3. 与命令构造函数相同的想法。它可以接受命令文本和连接。节省一点打字。

  4. 你的想法是对的;使用.HasRows. READER.Read如 jmcilhinney 评论中所述,您只需添加即可获得第一条记录。

Private Sub GetGrade()
    Using MySqlConn As New 
        MySqlConnection("server=localhost; userid=root; password=qwerty; database=ssg")
        Using COMMAND As New MySqlCommand("select grade from gradetable", MySqlConn)
            MySqlConn.Open()
            Using READER As MySqlDataReader = COMMAND.ExecuteReader
                If READER.HasRows Then
                    READER.Read()
                    Form2.TextBox1.Text = READER("grade")
                Else
                    MessageBox.Show("Sorry, no grade yet.")
                End If
            End Using
        End Using
    End Using
End Sub

推荐阅读