C# 中帶有列名稱參數的動態 SQL
您可以在 SqlCommand 查詢中包含列名稱作為參數嗎?答案通常是「否」。原因是資料庫引擎在連線開啟時且在您設定任何參數之前處理查詢計畫。但是,您可以利用一些技術來實現所需的結果。
讓我們考慮以下場景:
SqlCommand command = new SqlCommand("SELECT @slot FROM Users WHERE name=@name; "); prikaz.Parameters.AddWithValue("name", name); prikaz.Parameters.AddWithValue("slot", slot);
此程式碼將會失敗。相反,您需要在運行時動態建立查詢,確保正確的輸入白名單以防止注入攻擊:
// Verify that "slot" is an approved/expected value SqlCommand command = new SqlCommand("SELECT [" + slot + "] FROM Users WHERE name=@name; ") prikaz.Parameters.AddWithValue("name", name);
在這種方法中,@name 保持參數化,從而可以安全高效地執行查詢.
以上是C# 動態 SQL 中列名可以當參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!