mysql - VB.net和Mysql登录问题使用两个表
问题描述
我如何在他的表格中使用医生级别登录。因为每次我登录时接待员表格总是弹出,即使我使用用户登录并通过医生可能我的语法错误请帮助我 PS:医生表格和接待员表格是不同的.
这是我的代码:
Try
mycon.Open()
Dim query1 As String
Dim query2 As String
Dim name As String
query1 = "SELECT * FROM receptionisttbl"
command = New MySqlCommand(query1, mycon)
reader = command.ExecuteReader
With reader
.Read()
If .Item("level") = "1" Then
With reader
.Read()
name = .Item("name")
End With
MsgBox("Welcome " + name)
Form1.Show()
command.Dispose()
reader.Close()
mycon.Close()
Else
mycon.Open()
query2 = "SELECT * FROM doctortbl"
command = New MySqlCommand(query2, mycon)
reader = command.ExecuteReader
With reader
.Read()
If .Item("level") = "2" Then
With reader
.Read()
name = .Item("name")
End With
MsgBox("Welcome " + name)
Form2.Show()
command.Dispose()
reader.Close()
mycon.Close()
End If
End With
End If
End With
Catch ex As Exception
MsgBox(ex.ToString)
Finally
mycon.Dispose()
End Try
解决方案
首先,让我们考虑您的要求。
提供登录表单以验证用户。
如果用户有效(在数据库中找到用户名和匹配的密码),则根据用户的级别显示一个表单。
考虑到需求,请查看数据库中表的设计。我们称它为 MDUsers。现在到列。
UserName as an VarChar size 100 and Primary key of the table
UserPassword as VarChar size 100
Level an Integer
现在,您拥有满足您的要求所需的所有数据的字段。
将一些示例数据添加到您的表中。
接下来想想你需要从用户那里得到什么来满足你的要求。相应地设计您的用户界面。您的登录表单将有 2 个文本框(用户名和密码)和一个按钮(登录)。
然后您需要考虑登录按钮的代码。您需要连接到数据库并检查用户名和密码是否匹配。找到匹配项后,您只需检索一条数据即可完成您的要求,即关卡。
现在我们怎么能要求数据库来做这一切呢?
Select level From MDUsers Where userName = @userName And UserPassword = @pword;
由于 userName 是表的主键,我们知道我们将找到不超过一条具有该 userName 的记录。如果密码也匹配,那么我们就有一个有效用户,我们将返回一条数据,该记录的级别。
Using...End Using
块确保即使出现错误,您的数据库对象也已关闭和处置。您可以将连接字符串直接传递给连接的构造函数,并将查询字符串和连接传递给命令的构造函数。
始终使用参数。
由于我们只需要一条数据,我们可以使用 .ExecuteScalar
Private Sub OpCode()
Dim retVal As Object
Using cn As New MySqlConnection("Your connection string"),
cmd As New MySqlCommand("Select level From MDUsers Where userName = @userName And UserPassword = @pword;", cn)
cmd.Parameters.Add("@userName", MySqlDbType.VarChar, 100).Value = txtName.Text
cmd.Parameters.Add("@pword", MySqlDbType.VarChar, 100).Value = txtPassword.Text
cn.Open()
retVal = cmd.ExecuteScalar
End Using
If retVal Is Nothing Then
MessageBox.Show("Login failed")
Return
End If
If CInt(retVal) = 1 Then
Form1.Show()
ElseIf CInt(retVal) = 2 Then
Form2.Show()
Else
MessageBox.Show("Level not recognized")
End If
End Sub
您必须检查 MySql 规则以了解保留字的列名和表名。
推荐阅读
- javascript - 运行 npm init 时出现错误消息
- javascript - 响应式图像:从 JavaScript 设置尺寸属性
- http - Http 到 https 重定向被 CORS 策略阻止
- javascript - 在运行功能之前检查条件的最佳方法是什么
- python-3.x - 无法从 Pyspark DataFrame 中选择超过 255 列
- iis-express - 将 SSL 与 IIS Express 一起使用
- php - 403 禁止在 IIS 上使用 codeigniter
- python - 通过自我而不是方法参数的类的Pytest夹具
- reactjs - 从 webpack 输出中删除绝对路径
- c# - Linux 上的 ASP.NET Core