带有转义变量的字符串连接

时间:2012-09-21 21:30:51

标签: c# sql sql-server string

相当简单的问题

我有一个类似于以下内容的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

2 个答案:

答案 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注入广泛打开