首页 > 数据库 > mysql教程 > C# 动态 SQL 中列名可以作为参数吗?

C# 动态 SQL 中列名可以作为参数吗?

Patricia Arquette
发布: 2024-12-31 08:25:09
原创
196 人浏览过

Can Column Names Be Parameters in C# Dynamic SQL?

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板