我尝试在不执行的情况下获取参数化查询。
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类。
答案 0 :(得分:2)
参数化查询在执行数据库中的SQL查询之前对pamater进行替换,以确保它消除了Sql注入的可能性。所以直接你不能得到FullSql命令..但如果你只想记录或其他任何东西..像报告和所有..使用下面的代码片段来获得完整正确的命令..
Logger.Verbose(cmd.CommandText.Replace("@id", id.ToString()));
<强>更新强>
哦,所以你想在TFS查询类中设置sql查询..更好地创建字符串连接查询然后传递..实际参数化查询没有提供获得完整准备的SQL查询的方法。使用字符串连接方式..!这就是解决这个问题的可能和平易近人的方式.. !!