【问题标题】:More Efficient Way of Adding Parameters to a SqlCommand .NET向 SqlCommand .NET 添加参数的更有效方法
【发布时间】:2010-02-19 20:50:36
【问题描述】:

我刚刚阅读了一个关于如何在 .NET 中向 SqlCommand 添加参数的问题,它向我提出了一个问题。在我的所有程序中,这就是我向命令添加参数的方式:

SqlCommand cmd = new SqlCommand(cmdText,conn);
cmd.Parameters.Add(new SqlParameter("@name",value));

我知道你也可以通过以下方式添加参数:

cmd.Parameters.Add(name, dbType, size).Value = value;

这些添加参数的方法哪个更好?有关系吗?我知道使用 Sql 命名空间对 SQL Server 查询更有效,所以我的第一反应是使用 SqlParameter 会更有效。但是,由于它已经是 SqlCommand,我对此不太确定。另外,由于使用 SqlParameter 实例化了一个新对象,这是否会使其效率低于其他情况?

【问题讨论】:

    标签: .net sql


    【解决方案1】:

    两种方式都将创建对象 - 无论您自己调用构造函数还是其他方法调用,对象仍将被创建。

    然而,更重要的是,您即将进行数据库调用。与数据库调用相比,创建十几个对象的成本绝对是花生,即使它是一个非常快的调用。

    不用担心 - 只需使用最可读的代码。

    【讨论】:

      【解决方案2】:

      这就是我在代码中的做法:

      cmd.Parameters.AddWithValue("@name", value);
      

      【讨论】:

        【解决方案3】:

        这是我的方式

        cmd.InjectFrom<SetParamsValues>(foo);
        

        所有属性 foo (我有时使用匿名,你也可以指定 ignores )将 AddWithValue 到 cmd,并且对于 null DBNull.Value 将被设置

        我建议你也从这里查看示例项目http://valueinjecter.codeplex.com/(它包含 DAL 示例)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-30
          • 1970-01-01
          • 2017-06-12
          • 2012-04-21
          • 2021-11-03
          • 2019-06-01
          • 1970-01-01
          相关资源
          最近更新 更多