【问题标题】:Update SQL Server database' s values quickly C# [duplicate]快速更新 SQL Server 数据库的值 C# [重复]
【发布时间】: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


【解决方案1】:

您可以尝试实现第二个(内部)循环来“收集”e。 G。 100 个更新字符串并用“;”连接它们然后在一个 SqlCommand 中执行 100 次更新。据我所知,这给我们最近的一个项目带来了显着的推动力。

【讨论】:

    【解决方案2】:

    在 SQL Server 上的临时表中添加您的数组 V1 数据,然后您可以在您的 'symb' 表和临时表之间进行更新。

    【讨论】:

      【解决方案3】:

      谢谢, 我使用带有临时表的 JOIN 命令解决了问题。 再见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 1970-01-01
        相关资源
        最近更新 更多