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

Ray*_*lex 2 c# sql sql-server string

相当简单的问题

我有一个类似于以下内容的SQL字符串:

query = "select * from table_name where name ='"+varName+"' and 
date ='"+varDate+"' order by state desc";
Run Code Online (Sandbox Code Playgroud)

varName中,varDate从另一个数据库的表中的前一个选择查询定义.他们的值可能包含':/和其他特殊字符.

有没有办法使用C#或SQL,我可以"转义"上面select语句中的varName,varDate的内容?

我宁愿不要隐藏特殊字符:)

编辑:

忘了包含 - 设置是MSSQL

Ric*_*lly 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())
  { ... }
}
Run Code Online (Sandbox Code Playgroud)