c# - 如何从表名指定为 SqlParameter 的表中进行选择?

标签 c# dynamic-sql sqlhelper

我正在尝试在使用参数从表中进行选择的位置执行动态 sql 选择。

SELECT null FROM @TableName 

但是我得到错误必须声明表变量@TableName。我怀疑这是因为我正在使用变量从表中进行选择。我以前不需要这样做。

List<SqlParameter> sqlParams = new List<SqlParameter>()
{ 
    new SqlParameter("TableName", "testtable"),
    new SqlParameter("FieldName", "testfield"),
    new SqlParameter("Find", "testfind"),
};
string sqlSelect = "SELECT null FROM @TableName 
                    WHERE @FieldName LIKE '%' + @Find + '%' ";

DataTable dtSelect = SqlHelper.ExecuteDataset(sqlConn, CommandType.Text, 
                        sqlSelect, 30, sqlParams.ToArray()).Tables[0]; 
//30 = timeout

如何使用动态 sql 执行上述操作? (请不要存储过程)

最佳答案

您不能对表名和列名等使用参数。对于那些你可以有一个可能值的白名单,然后在构建 SQL 查询时使用字符串连接。

关于c# - 如何从表名指定为 SqlParameter 的表中进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565271/

相关文章:

c# - 在 C# 中使用带有变量名的 SQLHelper 创建表

c# - 写入服务器的不同数据被附加为单个字符串

c# - WPF 中的 Treeview 加载事件之后

arrays - 静态表中的动态表名与数组列

postgresql - 如何将表中的选定值分配给 Pl/pgSQL 中的特定变量?

Java/Android SQL Helper Class 升级时为什么丢表?

c# - 如何取消引用 LINQ 中可能为空的字符串

c# - 在 C# 中,有没有办法让类使用接口(interface)或抽象类定义字段?

Postgresql:EXECUTE sql_cmd merge with CREATE TEMP TABLE temp_tbl AS SELECT

MySQL 错误代码 : 3948 Loading local data is disabled; this must be enabled on both the client and server sides