【发布时间】:2014-03-01 15:46:42
【问题描述】:
我有一个 Windows 窗体,用户可以在其中在多个文本框中输入多个值以获得更快的搜索结果。但是在运行时,它只需要第一个参数,即全名,而忽略另一个。不知道为什么会这样。 我得到了我不想要的结果中的完整表格。
private void btnSubmit_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=MADDY-PC\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
try
{
con.Open();
string sql = "SELECT * FROM Customers WHERE ContactName LIKE '%" + txtFullName.Text + "%' OR Address LIKE '%" + txtAddress.Text + " %' OR Phone LIKE '%"+txtContactNumber.Text+"%'";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable ds = new DataTable();
da.Fill(ds);
if (ds.Rows.Count > 0)
{
dataGridView1.DataSource = ds;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
con.Close();
}
}
我在哪里犯错了,请指导我。
谢谢
【问题讨论】:
-
已检查。还没有结果。还有其他选择吗?
-
您是否在所有文本框中输入文本?如果您错过任何人,查询条件语句将具有此表达式
OR Address LIKE '%%',这将导致在输出中选择所有记录 -
@DipenduPaul 如何避免这种情况?如果用户只输入名称并想要该名称或仅与该名称相似的结果怎么办?
标签: c# sql datagridview