首页 >数据库 >mysql教程 >C# SqlCommand 可以在没有存储过程的情况下参数化列名吗?

C# SqlCommand 可以在没有存储过程的情况下参数化列名吗?

Susan Sarandon
Susan Sarandon原创
2024-12-21 14:29:10295浏览

Can C# SqlCommand Parameterize Column Names Without Stored Procedures?

SqlCommand 中的参数:列名称参数化的替代方案

在 C# 中,存储过程并不总是动态列名称参数化所需的解决方案。问题出现了:我们可以在不借助存储过程的情况下完成此任务吗?

简短的答案是否定的。 SqlCommand 不支持列名参数化。但是,我们可以在运行时动态构建查询。

为了防止注入攻击,验证输入列名称(在本例中为“槽”)是否得到批准和预期至关重要。考虑到这一点,我们可以按如下方式构建查询:

// TODO: 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# SqlCommand 可以在没有存储过程的情况下参数化列名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn