C# 类SQL%未搜索
我想使用类似SQL的函数执行一个简单的搜索。不幸的是,由于某种原因,它似乎不起作用。下面是我的代码C# 类SQL%未搜索,c#,asp.net,sql,sql-server,sql-like,C#,Asp.net,Sql,Sql Server,Sql Like,我想使用类似SQL的函数执行一个简单的搜索。不幸的是,由于某种原因,它似乎不起作用。下面是我的代码 private void gvbind() { connection.Open(); string sql = ""; if (txtSearch.Text.Trim() == "") { sql = "SELECT a.cname,[bid],b.[bname],b.[baddress],b.[bcity],b.[bstate],b.[bpost
private void gvbind()
{
connection.Open();
string sql = "";
if (txtSearch.Text.Trim() == "")
{
sql = "SELECT a.cname,[bid],b.[bname],b.[baddress],b.[bcity],b.[bstate],b.[bpostcode],b.[bphone],b.[bfax],b.[bemail] FROM [CLIENT] a INNER JOIN [BRANCH] b ON a.clientID=b.clientID ORDER BY a.[clientID]";
}
else
{
sql = "SELECT a.cname,[bid],b.[bname],b.[baddress],b.[bcity],b.[bstate],b.[bpostcode],b.[bphone],b.[bfax],b.[bemail] FROM [CLIENT] a INNER JOIN [BRANCH] b ON a.clientID=b.clientID WHERE b.[bname] LIKE '%@search%' ORDER BY a.[clientID]";
}
SqlCommand cmd = new SqlCommand(sql,connection);
cmd.Parameters.AddWithValue("@search", txtSearch.Text.Trim());
cmd.CommandType = CommandType.Text;
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd;
DataSet ds = new DataSet();
adp.Fill(ds);
connection.Close();
if (ds.Tables[0].Rows.Count > 0)
{
gvBranch.Enabled = true;
gvBranch.DataSource = ds;
gvBranch.DataBind();
}
else
{
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
gvBranch.DataSource = ds;
gvBranch.DataBind();
int columncount = gvBranch.Rows[0].Cells.Count;
gvBranch.Rows[0].Cells.Clear();
gvBranch.Rows[0].Cells.Add(new TableCell());
gvBranch.Rows[0].Cells[0].ColumnSpan = columncount;
gvBranch.Rows[0].Cells[0].Text = "No Records Found";
}
ds.Dispose();
}
在Page_Load()方法中使用
if((!Page.IsPostBack))
{
gvBind();
}
它在按钮搜索时被称为“同时单击”。但是,当我执行搜索时,它不会返回任何找到的记录。使用
LIKE '%' + @search + '%'
而不是
LIKE '%@search%'
完整查询
...
else
{
sql = "SELECT a.cname,[bid],b.[bname],b.[baddress],b.[bcity],b.[bstate],b.[bpostcode],b.[bphone],b.[bfax],b.[bemail] FROM [CLIENT] a INNER JOIN [BRANCH] b ON a.clientID=b.clientID WHERE b.[bname] LIKE '%' + @search + '%' ORDER BY a.[clientID]";
}
实际上,查询中的每一列都不需要使用方括号([]
)。如果您的标识符或对象名称为空,请使用它们
谢谢。这是可行的,但有什么解释吗
这里的主要问题是,您的查询参数在引号内。在引号中,SQL Server会将其识别为一个参数,从不将其视为一个参数