如何在C#textbox.Text值的SQL Server搜索中使用单引号实现LIKE%?

时间:2014-07-10 18:30:10

标签: c# sql sql-server textbox

MY SQL Server的SELECT语句在我的C#中有当前的WHERE子句:

strQuery4_main += " WHERE ([Description] LIKE ";
strQuery4_main += "'" + txtbox_ReportBy_start.Text + "%" + "'";
strQuery4_main += " ) ";

如果我输入关键字

性质

在我的txtbox_ReportBy_start文本框中, 查询将搜索以名称' nature'开头的任何内容,这很好。

但如果我搜索关键词

自然之路

然后会出现错误消息

  

' - '附近的语法不正确。字符后面有未闭合的引号   字符串' AS []'。

我知道我应该用两个单引号来替换一个单引号,但是它应该如何在textbox值中起作用?

1 个答案:

答案 0 :(得分:5)

在您的查询中使用参数。连锁查询也很容易SQL Injection

strQuery4_main += " WHERE ([Description] LIKE @pDescription";

稍后使用命令对象执行:

yourCommandObject.Parameters.AddWithValue("@pDescription", 
                                           txtbox_ReportBy_start.Text +"%");

您可能会看到:Parameterizing Your SQL Queries: The RIGHT Way To Query A Database

目前您收到错误,因为输入中的单引号未转义。您可以使用另一个单引号来逃避单引号。但是您应该始终考虑在查询中使用参数。