在某些情況下,開發人員可能不僅希望參數化值,還希望參數化SQL 查詢的其他部分,例如表名。雖然直接參數化表名是不可能的,但有一些間接方法可以實現這一點。
一種方法涉及利用 sp_ExecuteSQL 預存程序,它允許執行動態 SQL 語句。透過在 C# 中建立查詢並將表名稱連接為字串,開發人員可以將此參數化查詢傳送到資料庫。
或者,開發人員也可以手動建構C# 中的參數化 TSQL。這涉及到將表名與查詢的其餘部分連接起來並將其作為命令向下發送。將表名列入白名單對於防止惡意輸入至關重要。
儘管開發人員是程式碼的唯一用戶,但仍然需要注意的是,參數化方法並沒有提供重要的資訊增加安全性。最佳實踐仍然是向呼叫使用者或應用程式授予對錶的特定 SELECT 權限。
使用sp_ExecuteSQL 間接參數化表名稱的範例:
string tableName = "Employee"; string sql = "SELECT * FROM " + tableName + " WHERE Id = @Id"; using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = sql; command.Parameters.AddWithValue("@Id", id); SqlDataReader reader = command.ExecuteReader(); } }
In在此範例中,表名稱作為指令文字中的字串連接起來。
以上是如何使用 .NET 間接參數化 SQL Server 查詢中的資料表名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!