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中文网其他相关文章!