我在网上搜索了一些东西,但没有什么帮助。我想用文章列表更新数据库,但我发现的方式非常慢。在mdb数据库中更新超过50,000行的最快方法c#
这是我的代码:
List<Article> costs = GetIdCosts(); //here there are 70.000 articles
conn = new OleDbConnection(string.Format(MDB_CONNECTION_STRING, PATH, PSW));
conn.Open();
transaction = conn.BeginTransaction();
using (var cmd = conn.CreateCommand())
{
cmd.Transaction = transaction;
cmd.CommandText = "UPDATE TABLE_RO SET TABLE_RO.COST = ? WHERE TABLE_RO.ID = ?;";
for (int i = 0; i < costs.Count; i++)
{
double cost = costs[i].Cost;
int id = costs[i].Id;
cmd.Parameters.AddWithValue("data", cost);
cmd.Parameters.AddWithValue("id", id);
if (cmd.ExecuteNonQuery() != 1) throw new Exception();
}
}
transaction.Commit();
但这种方式需要大量的分像10分钟以上。还有另一种方法来加速此更新?谢谢。
您打算尝试去讨论该表上的约束条件,但是由于新数据的原因,当您再次激活时可能无法验证约束条件。 –
在进入for循环之前,尝试用'cmd.Parameters.Add()'创建参数,然后执行'cmd.Prepare()'。然后,在循环中只分配参数值和'.ExecuteNonQuery()'。这可能会加快一点。 –