[英]C#, replacing special character in query
我在数据库中有一条记录,其中包含特殊字符,例如&,'
(撇号)。
记录看起来像这样.. stack'overflow
。
在我的查询中,我这样写。
where name = ' " +name+ " ' ";
假设名称为stack'overflow
那么它给了我一个语法错误。
怎么解决呢?
我正在使用C#
您的问题尚不清楚,但是答案几乎肯定是不会在SQL语句中包含数据。 而是使用参数化查询,因此您无需担心自己执行任何转义等操作。
作为示例,请查看SqlCommand.Parameters文档-但要注意,不同的数据库提供程序使用不同的参数方法(例如,命名方法与位置方法)。
不要在查询中附加文字。 在Google中搜索SQL注入。 这是一个大问题,您不应该这样做。 您可能会使您的应用程序容易受到严重攻击。
一种解决方案是在查询中使用SQL参数。 在此处查看更多信息: 在命令中添加参数
使用参数化查询 。 他们将为您处理特殊字符的转义,并有助于防御SQL注入攻击。 它们还为SQL Server提供了更好的机制来缓存执行路径以提高性能。
永远,永远, 永远使用串联SQL。
更好的方法是使用参数化查询。 如果事先未正确地对数据进行语法处理,则用于SQL的字符串构建可能非常危险。
尝试这样的事情:
string query = "SELECT * FROM myTable WHERE name = @p_name";
SqlCommand cmd = new SqlCommand(query, sqlConnection);
cmd.Parameters.AddWithValue("@p_name",yourTextItem);
针对您的情况进行了更新:
string myName = TextBox1.Text;
string query = "SELECT * FROM myTable WHERE name LIKE %@p_name%";
SqlCommand cmd = new SqlCommand(query, sqlConnection);
cmd.Parameters.AddWithValue("@p_name",myName);
您需要使用参数。
有关更多信息,请查阅文档以了解所使用的内容。
在传入之前在名称变量中用"''"
替换"'"
,您应该可以。
编辑:
是的,这只是一个临时解决方案。 要永久解决您的问题,请使用参数化查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.