得到“;没有为一个或多个必需参数给定值&”;

本文关键字:参数 一个 得到 | 更新日期: 2023-09-27 18:25:19

我已经创建了一个注册页面,并将其链接到Access数据库,现在我正试图使用Db上存储的信息在登录页面上使用,但一直收到"一个或多个必需参数没有给定值。"错误。

protected void loginButtn_Click(object sender, EventArgs e)
{
    string connect = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:'Users'Wisal'Documents'Visual Studio 2012'WebSites'WebSite3'registration-Db.mdb";       
    string query = "Select Count(*) From client Where [name] = ? And  surname = ? and [password] = ?";
    int result = 1;
    using (OleDbConnection conn = new OleDbConnection(connect))
    {
        using (OleDbCommand cmd = new OleDbCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("", nameloginBox.Text);
            cmd.Parameters.AddWithValue(" ", snameloginBox.Text);
            cmd.Parameters.AddWithValue(" ", passwrdloginBox.Text);
            conn.Open();
            Session["User"] = nameloginBox.Text;
            result = (int)cmd.ExecuteScalar();
        }   
    }
    if (result > 0)
    {
        Response.Redirect("general.aspx");
    }
    else
    {
        Literal1.Text = "Invalid credentials";
    }
} 

得到“;没有为一个或多个必需参数给定值&”;

正如@Rob所评论的(击败我),您正在传递3个没有名称的参数。您的代码应该是这样的,这样Access就知道什么参数对应什么变量。

string query = "Select Count(*) From client Where Username = ? And UserPassword = ?";
int result = 1;
using (OleDbConnection conn = new OleDbConnection(connect))
{
    using (OleDbCommand cmd = new OleDbCommand(query, conn))
    {
        cmd.Parameters.AddWithValue("Username", snameloginBox.Text); //username parameter
        cmd.Parameters.AddWithValue("UserPassword", passwrdloginBox.Text); //userpassword parameter
        conn.Open();
        Session["User"] = nameloginBox.Text;
        result = (int)cmd.ExecuteScalar();
    }   
}

有关向Access查询传递参数的更多信息,请点击此处。