如何获取参数化查询?

时间:2014-10-30 06:25:49

标签: c# sql sqlcommand parameterized-query

我尝试在不执行的情况下获取参数化查询。

string query="SELECT * FROM Table1 WHERE [ID]=@id";

所以,我创建了SqlCommand:

int id=10;

SqlCommand cmd = new SqlCommand(query);
cmd.Parameters.AddWithValue("@id",id);

如何在没有执行参数化查询的情况下获取参数化查询 - 想得到如下字符串:

"SELECT * FROM Table1 WHERE ID=10"

编辑:我使用TFS 2012,我必须使用基于TFS的类来处理它:

  Query qry1 = new Query(wis, query, null, false);
  ICancelableAsyncResult car1 = qry1.BeginQuery();
  WorkItemCollection items1 = qry1.EndQuery(car1);

所以,我想将参数化查询设置为Query类。

1 个答案:

答案 0 :(得分:2)

我会说 -

参数化查询在执行数据库中的SQL查询之前对pamater进行替换,以确保它消除了Sql注入的可能性。所以直接你不能得到FullSql命令..但如果你只想记录或其他任何东西..像报告和所有..使用下面的代码片段来获得完整正确的命令..

Logger.Verbose(cmd.CommandText.Replace("@id", id.ToString()));

<强>更新

哦,所以你想在TFS查询类中设置sql查询..更好地创建字符串连接查询然后传递..实际参数化查询没有提供获得完整准备的SQL查询的方法。使用字符串连接方式..!这就是解决这个问题的可能和平易近人的方式.. !!