关于C#中使用SqlCommand时不能使用参数作为列名的问题,我们可以通过以下方式解决:
string columnName = "your_column_name";
string sql = $"SELECT * FROM your_table WHERE {columnName} = @value";
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("@value", yourValue);
string columnName = "your_column_name";
string sql = $"EXEC sp_executesql N'SELECT * FROM your_table WHERE {columnName} = @value', N'@value your_column_type', @value = @value";
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("@value", yourValue);
var data = from row in yourDataContext.your_table
where row.GetType().GetProperty(columnName).GetValue(row, null).Equals(yourValue)
select row;
需要注意的是,这些方法都存在SQL注入的风险,因此需要对输入的列名进行严格的验证,以确保安全性。
推荐的腾讯云相关产品:
产品介绍链接地址:
云+社区技术沙龙[第21期]
DB-TALK 技术分享会
技术创作101训练营
北极星训练营
云+社区技术沙龙[第17期]
云+社区沙龙online [云原生技术实践]
北极星训练营
技术创作101训练营
领取专属 10元无门槛券
手把手带您无忧上云