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