【发布时间】:2017-06-09 19:06:38
【问题描述】:
我需要更新数据库中的很多行。
目前我正在使用以下代码:
string cmd = "";
cmd = "UPDATE [" + symb + "] SET V1='" + v1.ToString() + "',V2 ='" + v2.ToString() + "',V3='" + v3.ToString() + "' Where V4='" + v4.ToString("yyyyMMdd HH:mm:ss.mmm") + "' AND V5='" + v5.ToString() + "'";
l_Cmd = new SqlCommand(cmd, access_connection);
l_Cmd.ExecuteNonQuery();
因为我必须更新 500/700k 行,所以需要很多时间。
你有什么建议吗?
抱歉之前的帖子,但所有值都不一样:
for (int a = 0; a < tot_rows; a++)
{
string cmd = "";
cmd = "UPDATE [" + symb + "] SET V1='" + v1[a].ToString() + "',V2 ='" + v2[a].ToString() + "',V3='" + v3[a].ToString() + "' Where V4='" + v4[a].ToString("yyyyMMdd HH:mm:ss.mmm") + "' AND V5='" + v5[a].ToString() + "'";
l_Cmd = new SqlCommand(cmd, access_connection);
l_Cmd.ExecuteNonQuery();
}
【问题讨论】:
-
请使用参数化查询。
-
这不是你需要的功能,而是更好的数据库结构。
-
如果你能更详细地分享你的数据库结构和用例会更好。 SQL 并不是真的要与使用这样的循环进行交互,尤其是与您正在谈论的行数(您说 700k,我认为它是 700000,这对于一次更新一个来说太多了) .这样做可能有更简单/更好的方法。
标签: c# sql-server