reader if and else语句

yqhsw0fo  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(268)

我在练习用visualbasic编程。visualbasic有两种形式。第一个窗体有一个命令按钮,它将显示第二个窗体的输入数据第二个窗体有一个文本框,我需要在其中输入数据并保存它。
我在第二个表单中输入的数据存储在mysql中
第一个窗体有一个名为“显示我的成绩”的命令按钮,如果我单击该按钮,我想显示窗体2并显示成绩。但是如果我没有输入任何分数,然后我点击“显示我的分数”按钮,它就会崩溃,我不知道错误。我试过使用代码“if reader.hasrows then:但仍然不起作用也试过if 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中输入成绩,我只想显示一条消息,说“你现在仍然没有成绩”
请帮忙。

oogrdqng

oogrdqng1#

具有匹配结尾using的using语句。这是在黑暗的地方。它可以确保您的对象被正确关闭和处置,即使有错误。这对于应尽快关闭的连接尤其重要。
我使用连接的构造函数传入连接字符串。设置属性很好。这只保存了一行代码。
与命令构造函数的想法相同。它可以接受命令文本和连接。省去了一点打字。
你的想法是对的;使用 .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

相关问题