OleDbDataReader reader = command.ExecuteReader(); System.Data.OleDb.OleDbException:'没有为一个或多个必需参数提供值。

时间:2018-12-07 11:14:24

标签: c#

private void btnLogin_Click(object sender, EventArgs e)
    {
        connection.Open();
        OleDbCommand command = new OleDbCommand();
        command.Connection = connection;
        command.CommandText = "select * from Cafelist where Username = '" + txtUsn.Text + "' and Password = '" + txtPass.Text + "'";
        OleDbDataReader reader = command.ExecuteReader();

        int count = 0;

        while (reader.Read())
        {
            count = count + 1;
        }
        if(count ==1)
        {
            MessageBox.Show("Username and password is correct");
        }
        else if (count > 1)
        {
            MessageBox.Show("Duplicate Found");
        }
        else
        {
            MessageBox.Show("Username/Password Incorrect");
        }


        connection.Close();
    }

尝试使用此代码拉出usn并通过登录,并得到此错误,尝试寻找解决方案,但未发现与我的问题类似的任何东西,我理解这可能是很基本的东西,但请放轻松因为我只玩过C#几周了,这是我第一次尝试使用数据库。

不尝试做任何安全功能,只是想弄清楚为什么当我输入文本并单击“登录”时出现此错误,我一直在跟随youtube视频尝试并自学(与这个主题一样多),但是他不会遇到此错误,我已经将自己Google遗忘了。

在此先感谢您,由于我这是我第一次发布,因此需要提供更多信息。

1 个答案:

答案 0 :(得分:1)

您需要在查询中插入要替换的参数以获取实际值,查询和参数在OleDbCommand上分开,尝试像这样替换cmd.CommandText

 command.CommandText = "select * from Cafelist where Username = @UserName and Password = @UserPass";

然后您需要像这样将参数提供给cmd:

cmd.Parameters.AddRange(new OleDbParameter[]
{
     new OleDbParameter("@UserName", txtUsn.Text),
     new OleDbParameter("@UserPass", txtPass.Text),
               ...
});