C# 如何在数据库中搜索名称开头的名称。。。还是名字的结尾
我有一个数据库表name,其中包含如下数据 现在我是这样做的C# 如何在数据库中搜索名称开头的名称。。。还是名字的结尾,c#,sql,C#,Sql,我有一个数据库表name,其中包含如下数据 现在我是这样做的 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.CloseConnect
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开头的名字…如果你想让像这样的
对名字的任何部分起作用,你需要在两边都写上%
;如果您真的只想要开始或结束(而不是中间),您应该执行操作,如“%search”或“search%”
无论哪种方式,您都应该参数化SQL查询以避免SQL注入,并使用
块将SqlConnection
和SqlDataReader
包装在中,以确保在发生异常时正确处理它,例如:
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]);
}
}
}
最后,请记住,如果您的文本框为空,这将匹配表中的所有行…从name开始,像这样的name在哪里起作用?textBox3.Text的值是多少?您对此的预期结果是什么?它不起作用,但是把名单上所有的名字都给我table@m.mahmoud首先在Dataset或Datatable中获取数据并将其绑定到网格,然后在Datatable上执行搜索操作,因为这不会再次向数据库发送点击,再次确认@p0
和`cmd.Parameters.AddWithValue(@p0',textBox3.Text);`是否足以提供两个参数?他只需要一个参数,但在该版本的查询中,同一个参数会被使用两次。ADO.NET会将其转换为类似于DECLARE@p0varchar(MAX)='sometext'的内容;选择。。其中名称“%”+@p0
etc.cmd=new-SqlCommand(“从名称“%”中选择全名,如“%@d”,con);cmd.Parameters.AddWithValue(“@d”,textBox3.Text);没有工作条件来声明参数>>>????我使用这些代码,并与我合作,如果我的名字喜欢全字