与sqlcommandbuilder一起使用参数化参数[无dataadapter]

AngelicCore

我正在尝试使用接受2个列名和一个表名的参数化查询,并从sql server DB中检索数据。

问题是无法对表名进行参数设置,因此我找到了使用sqlcommandbuilder.quoteIdentifer(tablename)的解决方案,该位有效...但是显然它们不能很好地配合使用。

我得到包含单个单词即列名的异常如果我手动放置列名,它会起作用。

怎么了

    public List<ItemsWithDescription> GetItemsFromDB(string name, string desc, string tableName)
    {
        List<ItemsWithDescription> items = new List<ItemsWithDescription>();
        try
        {
            Status = 1;
            SqlCommandBuilder builder = new SqlCommandBuilder();
            cmd = new SqlCommand("Select @Name, @Desc from "+ builder.QuoteIdentifier(tableName), conn);
            cmd.Parameters.AddWithValue("@Name", name);
            cmd.Parameters.AddWithValue("@Desc", desc);
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    items.Add(new ItemsWithDescription(dr[name].ToString(), dr[name].ToString() + " | " + dr[desc].ToString()));                        
                }
            }
            items.Sort((x, y) => string.Compare(x.Item, y.Item));
        }
        catch
        {
            Status = -1;
        }
        return items;
    }

编辑:这有效,但我想知道为什么不能同时使用两者:

cmd = new SqlCommand("Select" +
builder.QuoteIdentifier(name) + "," + 
builder.QuoteIdentifier(desc) + "from " +
builder.QuoteIdentifier(tableName), conn);
Soner Gonul

您无法参数化列名。实际上,您无法在常规SQL中做到这一点

您需要的是Dynamic SQL

如果您遵循Microsoft SQL Server上的各种新闻组,则经常会看到人们问为什么不能这样做:

SELECT * FROM @tablename
SELECT @colname FROM tbl
SELECT * FROM tbl WHERE x IN (@list)

对于这三个示例,您可以期望有人回答“使用动态SQL”,并给出有关如何执行此操作的快速示例。不幸的是,对于上述所有三个示例,动态SQL都不是很好的解决方案。另一方面,在某些情况下,动态SQL是最佳或唯一的选择。

Table-Valued Parameters如果您使用的是SQL Server 2008及更高版本,请同时查看

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将构造函数与无参数的参数一起使用

来自分类Dev

将可变参数模板与模板化的类参数一起使用

来自分类Dev

将Scrapyd与参数一起使用

来自分类Dev

如何使输入与参数一起使用?

来自分类Dev

参数化的ODBC查询可与VarChar一起使用,但不能与DateTime一起使用?

来自分类Dev

参数化实例化如何与SingleInstance Lifescope一起使用

来自分类Dev

参数化实例化如何与SingleInstance Lifescope一起使用

来自分类Dev

不能将参数化的SQL语句与Node.js和Postgres一起使用

来自分类Dev

将初始化列表与可变参数模板一起使用

来自分类Dev

Swift 2.2-将初始化程序与类类型的可变参数一起使用

来自分类Dev

可以将ts_stat与参数化查询Postgresql一起使用

来自分类Dev

如何使目录变形与参数化/索引类型一起使用?

来自分类Dev

将泛型/参数化的Java与多个类一起使用

来自分类Dev

将参数传递给 Django REST 框架序列化程序以与模型一起使用

来自分类Dev

将地图与多个参数一起使用

来自分类Dev

Python将* args与默认参数一起使用

来自分类Dev

重载解析如何与可变参数一起使用?

来自分类Dev

将subprocess.call与参数一起使用

来自分类Dev

在概念中将模板模板参数与CRTP一起使用

来自分类Dev

在Java中将Factory模式与多个参数一起使用

来自分类Dev

如何将ArgumentOutOfRangeException与多个参数一起使用?

来自分类Dev

Python:将定义的参数与* args一起使用

来自分类Dev

使Javascript函数与参数一起使用时出现的问题

来自分类Dev

将$ _GET与URL中的多个参数一起使用

来自分类Dev

将方法引用与参数一起使用

来自分类Dev

在Retrofit中一起使用@Field和@Body参数

来自分类Dev

在Laravel中将存储过程与OUT参数一起使用

来自分类Dev

将maven JavaDoc与合理的doclint参数一起使用

来自分类Dev

概念可以与模板模板参数一起使用吗?

Related 相关文章

  1. 1

    如何将构造函数与无参数的参数一起使用

  2. 2

    将可变参数模板与模板化的类参数一起使用

  3. 3

    将Scrapyd与参数一起使用

  4. 4

    如何使输入与参数一起使用?

  5. 5

    参数化的ODBC查询可与VarChar一起使用,但不能与DateTime一起使用?

  6. 6

    参数化实例化如何与SingleInstance Lifescope一起使用

  7. 7

    参数化实例化如何与SingleInstance Lifescope一起使用

  8. 8

    不能将参数化的SQL语句与Node.js和Postgres一起使用

  9. 9

    将初始化列表与可变参数模板一起使用

  10. 10

    Swift 2.2-将初始化程序与类类型的可变参数一起使用

  11. 11

    可以将ts_stat与参数化查询Postgresql一起使用

  12. 12

    如何使目录变形与参数化/索引类型一起使用?

  13. 13

    将泛型/参数化的Java与多个类一起使用

  14. 14

    将参数传递给 Django REST 框架序列化程序以与模型一起使用

  15. 15

    将地图与多个参数一起使用

  16. 16

    Python将* args与默认参数一起使用

  17. 17

    重载解析如何与可变参数一起使用?

  18. 18

    将subprocess.call与参数一起使用

  19. 19

    在概念中将模板模板参数与CRTP一起使用

  20. 20

    在Java中将Factory模式与多个参数一起使用

  21. 21

    如何将ArgumentOutOfRangeException与多个参数一起使用?

  22. 22

    Python:将定义的参数与* args一起使用

  23. 23

    使Javascript函数与参数一起使用时出现的问题

  24. 24

    将$ _GET与URL中的多个参数一起使用

  25. 25

    将方法引用与参数一起使用

  26. 26

    在Retrofit中一起使用@Field和@Body参数

  27. 27

    在Laravel中将存储过程与OUT参数一起使用

  28. 28

    将maven JavaDoc与合理的doclint参数一起使用

  29. 29

    概念可以与模板模板参数一起使用吗?

热门标签

归档