在 SQL 中參數化表名?
問題:
是否可以傳遞表格.NET/SQL 中的名稱作為參數?最終目標是在不影響安全性的情況下增強整潔性並避免混亂的程式碼。
答案:
不支援直接參數化表名稱。但是,您可以使用sp_ExecuteSQL 間接實現此目的:
SqlConnection conn = new SqlConnection("Your database connection string"); DataTable dt = new DataTable(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_ExecuteSQL"; cmd.Parameters.AddWithValue("@stmt","SELECT * FROM table"); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { da.Fill(dt); } }
或者,您可以在C# 中建構(參數化)SQL 語句,附加表名稱,並將其作為命令執行:
var name = ...; //Determine table name dynamically here var sql = $"SELECT * FROM {"table"}"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.Add("", ...); var result = cmd.ExecuteReader(); ... }
記得將表名列入白名單,以防止潛在的安全漏洞。
以上是能否在 .NET/SQL 中對錶名稱進行參數化以獲得乾淨、安全的程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!