vb.net - 如何解决登录表单中的 if 语句
问题描述
每当我点击未注册到数据库的 RFID 时,它都不会显示 msgbox。我使用了一些条件语句,但它也不起作用。我尝试了不等于运算符但也没有用
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
process1:
Try
rec = New ADODB.Recordset
rec.Open("SELECT * from admin where rfid='" & TextBox4.Text & "'", con, 1, 2)
Dim y As Integer
y = 0
While Not rec.EOF
rec.MoveNext()
y = y + 1
End While
If y = 1 Then
Timer1.Stop()
Me.Hide()
MsgBox("VALID RFID! WELCOME ADMIN!")
SystemForm.Show()
TextBox4.Text = ""
If y <> 1 Then
Timer1.Stop()
MsgBox("Invalid RFID NO.!")
TextBox4.Text = ""
End If
End If
Catch ex As Exception
Timer1.Stop()
MsgBox("Invalid RFID NO.!")
TextBox4.Text = ""
End Try
End Sub
解决方案
首先,为什么要使用已有十年历史的开发工具。Visual Studio 2019 社区可免费下载。
完全摆脱这些Timer
,只需使用登录按钮。
让我们进入当前十年并使用ADO.net
而不是ADODB
.
由于我不知道您使用的是什么数据库,所以我举了一个使用 Sql Server 的示例。如果数据库是 Access,那么您必须将 Sql 数据库对象更改为 OleDb 对象。在文件顶部导入以下内容之一。
Imports System.Data.SqlClient
或者
Imports System.Data.OleDb
数据库对象需要关闭和处置。Using...End Using
即使出现错误,blocks 也会为您解决这个问题。您可以将连接字符串直接传递给连接的构造函数,将命令文本和连接直接传递给命令的构造函数。请注意,它们都包含在同一个 Using 块中。
当您只需要计数时,不要拉下数据。只求数。永远不要连接字符串来构建 Sql 查询。始终使用参数来避免 Sql 注入。
我不得不猜测 rfid 的数据类型。检查数据库的实际类型并相应地调整代码。
.ExecuteScalar
如果结果集返回第一行,第一列。在这种情况下,记录计数。
请注意,直到.Execute...
. 它在使用 后立即关闭End Using
。在连接关闭之前,我们不会开始比较结果并显示消息框。
如果您尝试此代码但它不起作用,请告诉我们错误是什么以及它发生在哪一行。
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Tick
Dim RetVal As Integer
Using cn As New SqlConnection("Your connection string"),
cmd As New SqlCommand("Select Count(*) Form admin Where rfid = @rfid;", cn)
cmd.Parameters.Add("@rfid", SqlDbType.Int).Value = CInt(TextBox4.Text)
cn.Open()
RetVal = CInt(cmd.ExecuteScalar)
End Using
If RetVal = 1 Then
MsgBox("VALID RFID! WELCOME ADMIN!")
SystemForm.Show()
Me.Hide()
Else
MsgBox("Invalid RFID NO.!")
End If
TextBox4.Text = ""
End Sub
推荐阅读
- node.js - Windows 节点服务未侦听端口
- javascript - 将 mocha 测试映射到 jira id
- flutter - 如何在 GridView 中编辑特定项目?
- javascript - 数字中的数字相乘 - 不包括零
- python - 在字符串格式键字段中添加其他字符
- c# - 连接字符串环境变量不在配置对象中,但可以使用 GetEnvironmentVariable 找到
- php - 来自 MySQL PDO 的回显数组
- google-bigquery - 是否可以覆盖 BigQuery 中的分区?
- javascript - 哪个版本的 ECMA 规范引入了提升?
- xamarin - 启动屏幕后 Xamarin.iOS 应用程序崩溃 - 条件“oti”未满足