更有效的方法为SqlCommand .NET添加参数

时间:2010-02-19 20:50:36

标签: .net sql

我刚刚读了一个关于如何在.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实例化一个新对象,是否会使其效率低于其他情况?

3 个答案:

答案 0 :(得分:12)

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

但更重要的是,您即将进行数据库调用。与数据库调用相比,创建十几个对象的成本绝对是 peanuts ,即使这是一个非常快速的调用。

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

答案 1 :(得分:2)

这就是我在代码中的表现:

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

答案 2 :(得分:0)

这是我的方式

cmd.InjectFrom<SetParamsValues>(foo);

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

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