首頁 > 資料庫 > mysql教程 > C# 動態 SQL 中列名可以當參數嗎?

C# 動態 SQL 中列名可以當參數嗎?

Patricia Arquette
發布: 2024-12-31 08:25:09
原創
196 人瀏覽過

Can Column Names Be Parameters in C# Dynamic SQL?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板