2014-10-30 56 views
1

我嘗試獲取參數化查詢而不執行。如何獲取參數化查詢?

string query="SELECT * FROM Table1 WHERE [ID][email protected]"; 

所以,我創建的SqlCommand:

int id=10; 

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

如何獲得參數化查詢沒有它executed-希望得到的只是字符串,如:

"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

爲什麼你需要的是什麼? – IVAAAN123 2014-10-30 06:27:52

+1

@ IVAAAN123他可能要創建報告..或想要記錄的目的..所以把注意力放在問題作爲其有效的.. – 2014-10-30 06:29:00

回答

2

嗯,我會說 -

參數化查詢做pamater的替代只是在數據庫中執行SQL查詢,使之確信它消除SQL注入的可能性之前。所以,直接你不能得到FullSql命令..但如果你想只是爲了記錄或其他任何東西..喜歡使用下面的代碼片段,以獲得完整的正確的命令報告和所有.. ..

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

更新

哦所以你想在TFS查詢類中設置sql查詢..最好創建字符串連接查詢,然後通過..實際參數化查詢不提供獲取完整準備好的SQL查詢的方法。使用字符串連接的方式..!多數民衆贊成在這個問題的可能和平易近人的方式..!

+0

編輯:我使用TFS 2012,我必須使用基於TFS類一起工作它: 查詢qry1 =新查詢(WIS,查詢,空,假); ICancelableAsyncResult car1 = qry1.BeginQuery(); WorkItemCollection items1 = qry1.EndQuery(car1); 所以,我喜歡將參數化查詢設置爲Query類。 – user2545071 2014-10-30 06:44:01

+0

Scarma:所以,我可以使用這樣的字符串: string query = @「SELECT * FROM WorkItems WHERE [Something] ='」+ Name +'「;? 然後 - 查詢qry1 = new Query(...,查詢,...,..);然後執行它 – user2545071 2014-11-18 06:47:35

+1

是的,你可以創建簡單的SQL查詢string和使用.. – 2014-11-18 08:26:48