在 vb.net 上登录访问时不存在数据时,尝试读取无效



我已经在我的应用程序中创建了一个登录表单。登录时我的问题是像我提交的标题这样的错误。我的编码如下

Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Call DatabaseConnection()
CMD = New SqlCommand("SELECT * FROM UserAplikasi WHERE username = '" + txtUsername.Text + "' AND password = '" + txtUsername.Text + "'", CONN)
RD = CMD.ExecuteReader
If RD.HasRows = True Then
ElseIf RD.Item("HakAkses").ToString = "administrator" Then
    Me.Hide()
    FormMenuUtama.MenuStripFormUtama.Items("HOME").Enabled = True
    FormMenuUtama.MenuStripFormUtama.Items("ORDERPLAN").Enabled = True
    FormMenuUtama.MenuStripFormUtama.Items("FINANCE").Enabled = True
    FormMenuUtama.MenuStripFormUtama.Items("BILLING").Enabled = True
    RD.Close()
ElseIf RD.Item("HakAkses").ToString = "orderplan" Then
    Me.Hide()
    FormMenuUtama.MenuStripFormUtama.Items("HOME").Enabled = True
    FormMenuUtama.MenuStripFormUtama.Items("ORDERPLAN").Enabled = True
    FormMenuUtama.MenuStripFormUtama.Items("FINANCE").Enabled = False
    FormMenuUtama.MenuStripFormUtama.Items("BILLING").Enabled = False
    RD.Close()
ElseIf MsgBox("Username atau Password yang anda masukan salah!") Then
    CONN.Close()
End If

当我用完点击按钮登录时出现错误

System.Data 中发生类型为"System.InvalidOperationException"的未处理异常.dll 其他信息:不存在数据时尝试读取无效。

我在数据库 sql 服务器上使用带有用户名、密码和 HakAkses 的用户表。怎么了?请。感谢

尝试使用 while RD.read 而不是 If RD。HasRows = true then此外,目前您的代码逻辑表明,如果表有列,则无需执行任何操作;如果没有,则退出代码

你已经被告知为什么没有数据(缺少.读取)并使用参数,而不是将密码存储为注释中的纯文本。我将其作为答案发布,因为我需要添加一些代码来演示。

您的如果...ElseIf 语句没有意义。如果您的读取器有行,则您的代码将下降到 End If。这就是你想要的吗?

    Dim x As Integer = 1
    If x = 1 Then
    ElseIf 1 = 1 Then
        Debug.Print("Second If")
    End If

最新更新