【发布时间】:2017-08-21 17:51:29
【问题描述】:
我有一个 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 中。我应该使用其他查询吗?
【问题讨论】:
-
所以在相等性测试之前删除空格,这取决于您的数据库语法:
... WHERE REPLACE([Serial Number], " ", "")='...您还应该使用参数化查询,因为目前您有一个 SQL 注入漏洞。 (也从该参数值中删除所有空格)
标签: c# sql datagridview