相当简单的问题
我有一个类似于以下内容的SQL字符串:
query = "select * from table_name where name ='"+varName+"' and
date ='"+varDate+"' order by state desc";
varName , varDate 是从另一个db表上的先前select查询定义的。他们的值可能包含':/和其他特殊字符。
有没有办法使用C#或SQL我可以“转义”上面select语句中的varName,varDate的内容?
我不想隐藏特殊字符:)
编辑:
忘记包含 - 设置是MSSQL
答案 0 :(得分:6)
您可以使用任何相当成熟的API对您的查询进行参数化。这种支持在ADO.NET中提供:
string query = "select * from table_name where name = @name and date = @date order by state desc";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Parameters.Add("@name", name);
cmd.Parameters.Add("@date", date);
using (SqlDataReader reader = cmd.ExecuteReader())
{ ... }
}
答案 1 :(得分:2)
我会把它保存在storead程序中
请注意: 无论转义如何,你的当前代码都是为sql注入广泛打开