首页 > 解决方案 > 数据库和显示结果

问题描述

我是编码新手。看来我无法在这个中产生结果。我正在创建一个 RFID Tap Card 系统。

当我点击卡片(数据库中有信息)时,数据将被保存(将出现PictureBox1)。但是当我尝试另一张尚未在数据库中的卡时,代码不会变成“Else”语法,或者我应该说 PictureBox2 没有显示,但 Picturebox1 仍然出现。另一种方法是什么?谢谢你。这是代码。

    Private Sub txtReceived_TextChanged(sender As Object, e As EventArgs) Handles txtReceived.TextChanged

    Dim mysql = "SELECT Schedule FROM tbl_patroninfo WHERE Schedule = @Sched"
    Dim myDate As Date = lbl_Date.Text
    myDate = Date.Today
    con = connectDB()
    con.Open()
    mycommand = New MySqlCommand(mysql, con)
    Dim dr As MySqlDataReader = mycommand.ExecuteReader
    Dim SelectCommand As New MySqlClient.MySqlCommand("Select Fullname From tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
    Dim SelectCommand2 As New MySqlClient.MySqlCommand("select Department from tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand2.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text

    If dr.Read = False Then
        con.Close()
        con.Open()
        lbl_Full.Text = CStr(SelectCommand.ExecuteScalar())
        lbl_Department.Text = CStr(SelectCommand2.ExecuteScalar())
        mycommand = New MySqlCommand("update tbl_patroninfo set Schedule = @Sched WHERE PatronRFID = @PID", con)
        mycommand.Parameters.Add("@Sched", MySqlDbType.Date).Value = myDate
        mycommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
        mycommand.ExecuteNonQuery()
        PictureBox1.Visible = True
        con.Close()
    Else
        con.Close()
        con.Open()
        PictureBox2.Visible = True
        lbl_Full.Text = "RECORD NOT FOUND!"
        con.Close()
    End If
End Sub

标签: vb.netvisual-studio-2017mysql-workbench

解决方案


顺便感谢@Daffas 和@Charles May 的帮助。我只是做了一些不太酷的事情,或者我应该说“作弊代码”来让系统运行。这仅用于项目目的。但是在系统的下一个版本中,我会正确地编写代码。我只是使用了一些标签和捕捉器文本框并将其设置为隐藏模式。我没有使用 dr.HasRows(对我来说效果不佳),而是使用了 executeScalar 编码并实现了这一点。到目前为止,这是我的代码:

    Dim SelectCommand As New MySqlClient.MySqlCommand("Select Fullname From tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
    Dim SelectCommand2 As New MySqlClient.MySqlCommand("select Department from tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand2.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
    lbl_Full.Text = txt_Catch.Text
    lbl_Full.Text = CStr(SelectCommand.ExecuteScalar())
    lbl_Department.Text = CStr(SelectCommand2.ExecuteScalar())

    If txt_Catch.Text = lbl_Full.Text Then
        con.Close()
        con.Open()
        lbl_Full.Text = "RECORD NOT FOUND!"
        PictureBox2.Visible = True
        con.Close()
        txt_Catch.Clear()

    Else
        con.Close()
        con.Open()
        '  lbl_Full.Text = CStr(SelectCommand.ExecuteScalar())
        ' lbl_Department.Text = CStr(SelectCommand2.ExecuteScalar())
        mycommand = New MySqlCommand("update tbl_patroninfo set Schedule = @Sched WHERE PatronRFID = @PID", con)
        mycommand.Parameters.Add("@Sched", MySqlDbType.Date).Value = myDate
        mycommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
        mycommand.ExecuteNonQuery()
        DataGridView1.Rows.Add(lbl_Full.Text, lbl_Time.Text)
        PictureBox1.Visible = True
        con.Close()

    End If

推荐阅读