我有这个代码,我想在SqlCommand中添加一组参数。
public void AddParameters(Dictionary<string, object> parameters)
{
if (parameters == null)
return;
foreach(KeyValuePair<string, object> keyValue in parameters)
{
sqlCommand.Parameters.AddWithValue(keyValue.Key, keyValue.Value);
}
}
我想在不使用循环的情况下提高效率,因为我可以拥有非常大的参数集合。有没有办法用一个函数添加整个集合?
答案 0 :(得分:3)
&#34;优化&#34;的唯一方法那个场景是已经有一个DbCommand
实例和正确的命令文本/类型,以及已经添加的参数,你只需在执行它之前依次设置每个.Value
。但是,如果您使用多个连接/线程,则需要仔细同步,因此需要仔细完成。最终,与在与数据库交谈的延迟相比,你在这里做的任何将没有,因此:很可能这只是过早的优化和牦牛剃须 - 意思是:你可能觉得你已经在这里取得了一些有用的东西,但你真正做的就是花时间。
答案 1 :(得分:1)
我不喜欢几件事
public
方法将参数添加到私有SqlCommand
,而私有AddWithValue
根本不应该是一个字段,而应该在您使用它的地方创建。这太容易出错了。void AddParameters(params SqlParameter[] parameters)
{
if (parameters == null || parameters.Length == 0)
return;
sqlCommand.Parameters.AddRange(parameters);
}
不安全并且可能导致性能(或其他)问题,因为参数的类型必须从值中派生如果可以的话,你可以使用这样的方法,但收效甚微:
params
SqlParameter pararmeter = new SqlParameter("@Column", SqlDbType.Int);
pararmeter.Value = 1234;
AddParameters(pararmeter);
关键字允许以这种方式使用它:
top[2] = 2
答案 2 :(得分:0)
您可以使用AddRange方法稍微改善性能:
public void AddParameters(SqlParameter[] parameters)
{
if (parameters == null)
return;
sqlCommand.Parameters.AddRange(parameters);
}