我的vb.net代码有问题,我有一个连接到mysql数据库的登录表单。它已经可以检查用户是否在数据库中,现在接下来要做的是根据登录帐户从数据库中获取名称,访问级别和userId,我将其存储在一个包含全局变量的模块中。
这是我的代码。
Module pubvars
Public Gplev As String
Public Gname As String
Public GuserId As Integer
End Module
然后我会在其他表格中使用这个变量,在第一个记录变量的会话中被正确读取,但是当我退出,然后用新的用户帐户登录时,传递的变量没有更新,这应该是在新帐户登录后更改。
这是我声明变量的代码。
Dim search1 As MySqlCommand = New MySqlCommand("SELECT * FROM `login` WHERE login.username = '" & TextBox1.Text & "' AND login.password = '" & TextBox2.Text & "'", con)
con.Open()
Dim dr As MySqlDataReader = search1.ExecuteReader
Dim userFound As Boolean = False
While dr.Read
userFound = True
pubvars.Gname = dr("name").ToString
pubvars.Gplev = dr("permission_level").ToString
pubvars.GuserId = dr("userId").ToString
End While
If userFound = True Then
main_menu.Show()
Me.Hide()
Else
MsgBox("Sorry, username or password not found", MsgBoxStyle.OkOnly, "Invalid Login")
TextBox1.Text = ""
TextBox2.Text = ""
End If
以下是我在第二种形式中使用变量的代码。
Private Sub main_menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label3.Text = pubvars.Gname
If pubvars.Gplev = "2" Then
Button8.Enabled = False
Button8.Visible = False
ElseIf pubvars.Gplev = "3" Then
Button8.Enabled = False
Button8.Visible = False
ElseIf pubvars.Gplev = "4" Then
Button8.Enabled = False
Button8.Visible = False
End If
End Sub
对于注销,我有以下代码。这是正确的还是退出还不够?
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
pubvars.Gname = ""
pubvars.Gplev = "0"
login.Show()
Me.Hide()
End Sub
答案 0 :(得分:0)
将登录var赋值逻辑从Load事件移动到Activated事件。当您第一次加载表单时,Load事件只执行一次。
每次显示表单.Show()
时都会发生Activated事件。如果将代码从Load事件移动到Activated,则应该解决问题。