得到"没有给出一个或多个必需参数的值。"

时间:2015-12-02 01:22:18

标签: c# ms-access-2007

我已经创建了一个注册页面,并将其链接到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";
    }
} 

1 个答案:

答案 0 :(得分:0)

正如@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查询的更多信息,请please reed here