Paramétrage des noms de table en SQL ?
Question :
Est-il possible de transmettre une table des noms comme paramètres dans .NET/SQL ? L'objectif final est d'améliorer la propreté et d'éviter le code compliqué sans compromettre la sécurité.
Réponse :
Le paramétrage direct des noms de table n'est pas pris en charge. Cependant, vous pouvez y parvenir indirectement en utilisant 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); } }
Vous pouvez également construire l'instruction SQL (paramétrée) en C#, en ajoutant le nom de la table et l'exécuter en tant que commande :
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(); ... }
N'oubliez pas de mettre les noms de tables sur liste blanche pour éviter d'éventuelles vulnérabilités de sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!