vb.net - 数据库和显示结果
问题描述
我是编码新手。看来我无法在这个中产生结果。我正在创建一个 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
解决方案
顺便感谢@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
推荐阅读
- protocols - 我可以制作/模拟我自己的自定义 MAVLink 数据包吗?
- javascript - 将 linearGradient 分配给画布背景颜色
- pine-script - 如何从指定时间范围的开始到结束绘制线条
- azure-devops - 通过 Azure CLI 将相关工作项自动关联到拉取请求
- django - 如何在 django 表单中显示错误消息?
- javascript - 如何检查一个数组是否包含另一个数组的所有元素
- python - 为什么 canlib 的行为如此缓慢?
- cryptography - 如何在 Windows 中使用 MSCAPI 扩展 HSM (Linux) 的功能?
- javascript - 如何通过两个 HTML 文件共享一个数组
- c# - 在容器中找不到要调试的 Docker 程序