C# 如何在数据库中搜索名称开头的名称。。。还是名字的结尾

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

我有一个数据库表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.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);没有工作条件来声明参数>>>????我使用这些代码,并与我合作,如果我的名字喜欢全字