当前位置: 首页 > 知识库问答 >
问题:

未声明“UserRole”。由于其保护级别,它可能无法访问

谷梁振
2023-03-14

我使用VB.NET和microsoft access作为我的数据库,我是VB.NET的新手,我尝试根据当前角色设置不同的访问级别。例如,登录后,管理员将转到主页。如果用户登录,则会将他们引导到另一个页面。我已经在数据库中设置了不同的角色,我在网上找到了一些代码来帮助我

但是,我不断收到错误“用户角色”未声明。由于其保护级别,它可能无法访问。是否需要先声明用户角色?如果是这样,我该怎么做?任何帮助将不胜感激,谢谢:)

公共类form 1 Dim log in error As String Dim UserRole As String公共函数login() Dim DBconn As New ADODB。连接Dim用户作为新ADODB。记录集

    Dim Username As String
    Dim userDB As String
    Dim passDB As String

    Dim UserFound As Boolean

    DBconn.Open("Provider = Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source = '" & Application.StartupPath & "\LoginDB.mdb'")

    user.Open("UserTable", DBconn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

    UserFound = False
    login = False
    Username = "Username = '" & txtuser.Text & "'" '

    Do
        user.Find(Username)
        If user.BOF = False And user.EOF = False Then
            userDB = user.Fields("Username").Value.ToString

            passDB = user.Fields("Password").Value.ToString

            If userDB <> txtuser.Text Then
                user.MoveNext()
            Else
                UserFound = True
                If passDB = txtpass.Text Then
                    UserRole = user.Fields("roles").Value.ToString
                    user.Close()
                    DBconn.Close()
                    Return True
                Else
                    loginerror = "Invalid Password"
                    user.Close()
                    DBconn.Close()
                    Return False
                End If
            End If
        Else
            loginerror = "Invalid Username"
            user.Close()
            DBconn.Close()
            Return False
        End If
    Loop Until UserFound = True
    user.Close()
    DBconn.Close()
    Return False


End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If login() = True And UserRole = "admin" Then
        adminwelcome.Show()
        Me.Close()
    ElseIf login() = True Then
        Welcome.Show()
        Me.Close()
    Else
        MessageBox.Show(loginerror, "Login Message")
    End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    AcceptButton = Button1
    Me.Show()
    Application.DoEvents()
    txtuser.Focus()
End Sub

Private Sub txtpass_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtpass.TextChanged

End Sub

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

End Sub

Private Sub txtuser_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtuser.TextChanged

End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

End Sub

Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click

End Sub

结束类

共有1个答案

顾乐家
2023-03-14

我假设您正在从数据库中提取UserRole。你得到这个错误是因为这个变量还没有被声明。

我将提取该信息(用户的角色)并将其存储到名为UserRole的类级变量中。然后,您将能够在Button1_Click子中访问它。

Public Class Form1
Dim loginerror As String
Dim UserRole As String
Public Function login()
Dim DBconn As New ADODB.Connection
Dim user As New ADODB.Recordset

Dim Username As String
Dim userDB As String
Dim passDB As String

Dim UserFound As Boolean

DBconn.Open("Provider = Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source = '" & Application.StartupPath & "\LoginDB.mdb'")

user.Open("UserTable", DBconn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

UserFound = False
login = False
Username = "Username = '" & txtuser.Text & "'" '

Do
    user.Find(Username)
    If user.BOF = False And user.EOF = False Then
        userDB = user.Fields("Username").Value.ToString

        passDB = user.Fields("Password").Value.ToString

        If userDB <> txtuser.Text Then
            user.MoveNext()
        Else
            UserFound = True
            If passDB = txtpass.Text Then
                UserRole = user.Fields("UserRole").Value.ToString
                user.Close()
                DBconn.Close()
                Return True
            Else
                loginerror = "Invalid Password"
                user.Close()
                DBconn.Close()
                Return False
            End If
        End If
    Else
        loginerror = "Invalid Username"
        user.Close()
        DBconn.Close()
        Return False
    End If
Loop Until UserFound = True
user.Close()
DBconn.Close()
Return False


End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)             Handles Button1.Click

If login() = True And UserRole = "admin" Then
    adminwelcome.Show()
    Me.Close()
ElseIf login() = True Then
    Welcome.Show()
    Me.Close()
Else
    MessageBox.Show(loginerror, "Login Message")
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AcceptButton = Button1
Me.Show()
Application.DoEvents()
txtuser.Focus()
End Sub

Private Sub txtpass_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtpass.TextChanged

End Sub

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

End Sub

Private Sub txtuser_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtuser.TextChanged

End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

End Sub

Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click

End Sub

End Class
 类似资料:
  • 这里是新的RubyonRails开发人员,只是尝试安装和设置。 我将按照这本指南开始学习。然而,当我使用3.2创建博客应用程序时,我在运行时遇到了一个问题。当我尝试时,我得到一个错误 安装rake 10.4.2时出错,Bundler无法继续。在捆绑之前,请确保“gem安装rake-v”10.4.2成功。 因此,当我尝试运行该命令时,会出现以下错误: 错误:找不到有效的gem rake:无法从htt

  • 5.2 权限和保护级别 权限内有四种类型的保护级别,它们包括正常,危险,签名和签名或系统。 根据保护级别,权限被称为正常权限,危险权限,签名权限或签名或系统权限。 以下部分中使用这些名称。

  • 问题内容: 我正在尝试学习Java,当我经过访问说明符时,我对此表示怀疑。如果未指定默认值,则默认值与java中的受保护访问说明符有什么区别? 问题答案: 该说明符允许所涉及类的所有子类访问它们,无论它们驻留在什么包中,以及同一包中的其他代码。默认说明符允许同一程序包中的其他代码访问,但不允许位于不同程序包中的子类中的代码访问。参见Java语言规范6.6节。 编辑:根据MichaelSchmeiß

  • 问题内容: 在下面的代码中,Consumer类可以访问Parent类的受保护方法。由于Parent和Consumer类之间没有关系,这怎么可能。 谢谢 问题答案: 表示:相同的包或通过继承。由于您的课程都在(实际上不建议使用),因此可以进行访问。顺便说一句:如果您尝试测试Java访问控制,则会忘记(= no修饰符= )。 另一方面,访问是指:从该特定类(以及仍然是主机类成员的非静态内部类)之外的任

  • 注意:“高级防护”功能需在“应用防护管理”中开启对应的防护(Web防护/Nginx自编译/RASP)才可使用。 高级防护功能为G01高级授权功能项,需在“功能管理”中进行授权。采用了无规则脚本虚拟机(沙盒)技术、RASP技术等,可以有效拦截未知webshell、及时发现网站程序存在的未知漏洞并支持java类web应用的漏洞防护。 功能开启后可以对利用网站中下述漏洞进行的攻击进行拦截。 功能 说明

  • 我目前正在使用Dash/Widevine DRM切换到ExoPlayer。通过测试,我遇到了很多没有启用HDCP保护的设备。由于合同协议,这是一个问题。在允许播放之前,我必须检测并记录它。 我的第一个想法是使用DrmManagerClient 我放弃了它,因为我没有得到结果,并试图使用 成功了!惊人的问题解决了! 。。。除非你能看到它只会在馅饼上起作用。。。这是不可能的。DrmInfo将在我尝试的