2010-03-30 110 views
4

我有一個填充的SqlCommand對象,其中包含各種數據庫類型的命令文本和參數及其值。我需要的是一個T-SQL腳本,我可以簡單地執行這個腳本,它具有與在命令對象上調用ExecuteNonQuery方法相同的效果。是否可以輕鬆地將SqlCommand轉換爲T-SQL字符串?

有沒有簡單的方法來做這樣的「腳本轉儲」,或者我必須從命令對象手動構建這樣的腳本?

+0

據我所知沒有這樣的函數,我擔心你必須通過將SqlCommand對象傳遞給(靜態)方法來自己寫這樣的東西。 – Fabian 2010-03-30 08:55:12

回答

4

我不認爲你可以直接從SqlCommand對象中獲得完整的sql語句。如果你記錄所有發送到你的sql服務器的命令,你會看到傳遞的命令文本與你的SqlCommand對象的命令文本相同。參數值分別傳遞。

所以我認爲你唯一的選擇是自己構建命令文本。這真的很容易;您從SqlCommand的CommandText開始,遍歷Parameters集合,用參數值(轉義)替換參數佔位符。這應該會導致一個完整的SQL查詢,它可以完成你所追求的任務。

+0

聽起來不錯,但有沒有簡單的方法來逃避這些價值? – 2010-03-30 08:58:40

+0

+1。使用此方法記錄SQL異常以包含「TSQL腳本」轉儲,準備好複製和粘貼以便在SSMS中手動/調試 – AdaTheDev 2010-03-30 09:16:44

+0

如果傳遞複雜類型(如Blob或xml數據),則轉義它們將很困難。但是,假設你傳遞了簡單的值,如varchars和數字,它應該像包含撇號(')中的值一樣簡單,並用doulbe替換任何包含的撇號(用'替換')。有一點需要注意的是日期。它們必須格式正確,但我現在不記得excact格式。 – 2010-03-30 09:29:59

相關問題