如何使用通配符搜索参数化?

How to use Wildcard Search Parameterized?

public DataTable Search()
{
    DataTable dt = new DataTable();
    SqlCommand searchcommand = new SqlCommand(
        "Select * from [ITEM MASTER] WHERE Item_Description LIKE  '%' @Item_Description  '%' ", con);

    searchcommand.Parameters.Add("@Item_Description", SqlDbType.NVarChar).Value = search;
    SqlDataAdapter da = new SqlDataAdapter(searchcommand);
    da.Fill(dt);
    return dt;
}

这是我的代码。我需要有关如何使用面向对象编程创建参数化搜索的帮助

简答

正如 Nathan 所说,只需在 @Item_Description 参数的两边添加 + 即可。这将 concatenate it together 与命令字符串的其余部分。

SqlCommand searchcommand = new SqlCommand("Select * from [ITEM MASTER] WHERE Item_Description LIKE  '%' + @Item_Description + '%' ", con);

更多建议

如果你想让你的代码更具可读性,你可以使用 @ 做一个 verbatim string。除其他事项外,逐字字符串让我们可以将一个字符串放在多行中,如下所示:

SqlCommand searchcommand = new SqlCommand(
     @"Select * 
       from [ITEM MASTER] 
       WHERE Item_Description 
       LIKE  '%' + @Item_Description + '%' ", con);

为了提高可读性,您可以将字符串放入其自己的变量中,将 T-SQL 关键字全部大写,并在命令文本的末尾添加一个分号,看起来像这...

最终代码示例

var commandText = @"

SELECT * 
FROM [ITEM MASTER] 
WHERE Item_Description 
LIKE  '%' + @Item_Description + '%';

";

SqlCommand searchcommand = new SqlCommand(commandText, con);

在我看来,当您下次在维护工作中遇到它时,读起来会更好。