c# OleDb异常"没有一个或多个必需参数的值",而试图从Access数据库搜索



我正在尝试使用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);"

最新更新