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