我有数据库表名称,其中包含类似这样的数据
目前我正在这样做
con = new SqlConnection(cs.DBConn);
con.Open();
cmd = new SqlCommand("SELECT full_name from name where name like '%" + textBox3.Text + "' order by name", con);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
dataGridView1.Rows.Clear();
while (rdr.Read() == true)
{
dataGridView1.Rows.Add(rdr[0]);
}
con.Close();
现在,我想搜索以mark或Michelle开头的名字......
答案 0 :(得分:0)
如果您希望LIKE
适用于该名称的任何部分,则需要将%
放在两边;如果你真的只想要开始或结束(但不是中间),你应该做LIKE '%search' or LIKE 'search%'
。
无论哪种方式,你真的应该参数化你的SQL查询以避免SQL注入,并将SqlConnection
和SqlDataReader
包装在using
块中,以确保它被正确处理掉发生异常,例如:
using (var con = new SqlConnection(cs.DBConn))
{
con.Open();
cmd = new SqlCommand("SELECT full_name from name where name like '%' + @p0 OR name LIKE @p0 + '%' order by name", con);
// or perhaps just "where name like '%' + @p0 + '%' order by name"
cmd.Parameters.AddWithValue("@p0", textBox3.Text);
using (var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dataGridView1.Rows.Clear();
while (rdr.Read() == true)
{
dataGridView1.Rows.Add(rdr[0]);
}
}
}
最后,请注意,如果您的文本框为空白,则会匹配表格中的所有行...