关于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注入的风险,因此需要对输入的列名进行严格的验证,以确保安全性。
推荐的腾讯云相关产品:
产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云