微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试从 Access 数据库中搜索时出现 C# OleDb 异常“没有为一个或多个必需参数提供值”

如何解决尝试从 Access 数据库中搜索时出现 C# OleDb 异常“没有为一个或多个必需参数提供值”

我正在尝试使用 Windows 窗体应用程序在 Access 数据库搜索输入值,找到的结果应显示在文本框中。但我不断收到此错误

这是我的代码

private void btn_search_Click(object sender,EventArgs e)
       {
            string search = "";
            SearchForm popup = new SearchForm();
            DialogResult dialogresult = popup.ShowDialog();
            if (dialogresult == DialogResult.OK)
            {
                search = SearchForm.item;
                
                if (search != "")
                {
                    Access_Connections.sql = "SELECT * FROM Learners WHERE @val IN(ID,Learner_name,Learner_surname,Grade,School,Gender,Blood_group,Home_language,Church_relation,Hostel_block);";

                    Access_Connections.cmd.Parameters.AddWithValue("@val",search);

                    Access_Connections.cmd.Parameters.Clear();
                    Access_Connections.cmd.CommandType = CommandType.Text;
                    Access_Connections.cmd.CommandText = Access_Connections.sql;
                    Access_Connections.cmd.Connection = Access_Connections.con;

                    Access_Connections.openConnection();

                    Access_Connections.rd = Access_Connections.cmd.ExecuteReader();

                    while (Access_Connections.rd.Read())
                    {
                        text_name.Text += Access_Connections.rd["Learner_name"].ToString();
                        text_surname.Text += Access_Connections.rd["Learner_surname"].ToString();
                        text_grade.Text += Access_Connections.rd["Grade"].ToString();
                        text_school.Text += Access_Connections.rd["School"].ToString();

                    }

                    Access_Connections.closeConnection();
                }
                else if (dialogresult == DialogResult.Cancel)
                {
                    Console.WriteLine("You clicked either Cancel or X button in the top right corner");
                }
                popup.dispose();
            }
        } 

解决方法

你把它颠倒过来了:

"SELECT * FROM Learners WHERE (Learner_name=@val OR Learner_surname=@val OR Grade=@val OR School=@val OR Gender=@val OR Blood_group=@val OR Home_language=@val OR Church_relation=@val OR Hostel_block=@val);"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。