我有一个Access数据库,其中包含包含空格的字段。我尝试允许用户搜索匹配项,但结果中的空格不返回任何信息。
var dtCustomers = new DataTable();
var adapter = new OleDbDataAdapter("SELECT * FROM Devices WHERE [Serial Number]='" + textBox1.Text + "'", conn);
adapter.Fill(dtCustomers);
dataGridView1.DataSource = dtCustomers;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Cells[0].Style.ForeColor = Color.Blue;
row.Cells[28].Style.ForeColor = Color.Red;
}
上面的代码将返回数据库中的结果,但如果数据库的字段输入为' 1Z 4568 29z4h'然后它不会被退回,除非用户输入完全相同的内容。结果显示在DataGridView中。我应该使用不同的查询吗?
答案 0 :(得分:2)
您可以使用SQL的replace
函数将[Serial Number]
列中的所有空格替换为空,并使用textBox1.Text.Replace(' ','')
确保用户的输入不会#&# 39;也有空格:
var dtCustomers = new DataTable();
var adapter = new OleDbDataAdapter(@"SELECT * FROM Devices WHERE replace([Serial Number], " ", "")='" + textBox1.Text.Relpace(' ','') + "'", conn);
adapter.Fill(dtCustomers);
dataGridView1.DataSource = dtCustomers;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Cells[0].Style.ForeColor = Color.Blue;
row.Cells[28].Style.ForeColor = Color.Red;
}