首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Visual basic System.Data.OleDb.OleDbException:“未为一个或多个必需参数指定值。”

Visual basic System.Data.OleDb.OleDbException:“未为一个或多个必需参数指定值。”
EN

Stack Overflow用户
提问于 2018-05-28 18:57:00
回答 1查看 204关注 0票数 0

我正在尝试创建一个登录表单,并不断收到此错误:

Visual basic System.Data.OleDb.OleDbException:“没有为一个或多个必需参数赋值。”

我使用的是带有vb的access数据库,所有内容都拼写正确,但我一直收到这个错误?

Private Sub Btn_Login_Click(sender As Object, e As EventArgs) Handles Btn_Login.Click
    If DbConnect() Then
        Dim SQLCmd As New OleDbCommand
        With SQLCmd
            .Connection = cn
            .CommandText = "Select * From Tbl_Staff Where (Username = @sUsername) and (Password = @sPassword)"
            .Parameters.AddWithValue("@sUsername", Txt_Username.Text)
            .Parameters.AddWithValue("@sPassword", Txt_Password.Text)

            Dim rs As OleDbDataReader = .ExecuteReader()

            If rs.Read Then
                PublicFirstname = rs("Firstname")
                PublicStaffID = rs("StaffID")
                'PublicAccessLevel = rs("AccessLevel")
                frmMainMenu.Show()
            Else
                MsgBox("Sorry, incorrect log in details entered")
            End If
            rs.Close()

编辑:

更改了我的代码,但仍然收到相同的错误:

If DbConnect() Then
    Using SQLCmd As New OleDbCommand
        With SQLCmd
            .Connection = cn
            .CommandText = "Select * From Tbl_Staff Where (Username = ?) and ([Password] = ?)"
            .Parameters.Add("@sUsername", OleDbType.VarChar).Value = Txt_Username.Text
            .Parameters.Add("@sPassword", OleDbType.VarChar).Value = Txt_Password.Text

            Using rs As OleDbDataReader = .ExecuteReader()
                If rs.Read Then
                Else
                    MsgBox("Sorry, incorrect log in details entered")
                End If
                rs.Close()
            End Using
        End With
    End Using
End If
EN

回答 1

Stack Overflow用户

发布于 2018-05-28 19:35:59

我在这里看到了两个问题。

CommandType设置为Text时,

  1. OleDbCommand不支持命名参数。

它们被提供的顺序是substantial.

把它放在方括号里。

其他需要增强的东西。

  • UsingOleDbCommand使用明文存储密码。

因此,您的代码应该如下所示:

Using SQLCmd As New OleDbCommand
    With SQLCmd
        .Connection = cn
        .CommandText = "Select * From Tbl_Staff Where (Username = ?) and ([Password] = ?)"
        .Parameters.Add("@sUsername", OleDbType.VarChar).Value = Txt_Username.Text
        .Parameters.Add("@sPassword", OleDbType.VarChar).Value = Txt_Password.Text

        Using rs As OleDbDataReader = .ExecuteReader()
            If rs.Read Then
            Else
                MsgBox("Sorry, incorrect log in details entered")
            End If
            rs.Close()
        End Using
    End With
End Using

编辑:

由于列名不是UsernamePassword,而是sUsernamesPassword,因此必须更改CommandText,如下所示:

.CommandText = "Select * From Tbl_Staff Where (sUsername = ?) and (sPassword = ?)"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50564802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档