Tabellennamen in SQL parametrisieren?
Frage:
Ist es möglich, eine Tabelle zu übergeben? Namen als Parameter in .NET/SQL? Das Endziel besteht darin, die Sauberkeit zu verbessern und unordentlichen Code zu vermeiden, ohne die Sicherheit zu beeinträchtigen.
Antwort:
Die direkte Parametrisierung von Tabellennamen wird nicht unterstützt. Sie können dies jedoch indirekt mit sp_ExecuteSQL erreichen:
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); } }
Alternativ können Sie die (parametrisierte) SQL-Anweisung in C# erstellen, den Tabellennamen anhängen und als Befehl ausführen:
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(); ... }
Denken Sie daran, die Tabellennamen auf die Whitelist zu setzen, um potenzielle Sicherheitslücken zu vermeiden.
Das obige ist der detaillierte Inhalt vonKönnen Tabellennamen in .NET/SQL für sauberen und sicheren Code parametrisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!