使用c#如何有效地从SQL数据库中检索和更新数千条记录

时间:2013-03-12 17:41:39

标签: c# sql

过程

  1. 我正在编写一个C#应用程序,需要从数据库A的SQL表中检索400万条记录(ID)。
  2. 然后,我需要使用每个ID从数据库B中的另一个SQL表中选择一行记录。
  3. 一旦我有了这一行,我就需要更新数据库C中的另一个SQL表
  4. 问题

    1. 在步骤1中检索和存储数据的最有效方法是什么? 一个。我应该在列表字符串中加载它吗? 湾你建议最初做批次吗?

    2. 实现步骤2和3的最有效方法

2 个答案:

答案 0 :(得分:0)

要检索您想要使用SqlDataReader的4M记录 - 它一次只会将一行数据加载到内存中。

var cn = new SqlConnection("some connection string");
var cmd = new SqlCommand("SELECT ID FROM SomeTable", cn);
var reader = cmd.ExecuteReader();

while (reader.Read())
{
    var id = reader.GetInt32(0);

    // an so on
}

reader.Close();
reader.Dispose();
cn.Close();

现在,为了处理两个和三个,我将利用DataTable获取您需要检索的行,然后在第三个数据库上使用SqlCommand。这意味着在reader.Read()内,您可以通过填充DataTable SqlDataAdapter并针对ExecNonQuery发出SqlCommand来获取所需的一行UPDATE声明。

编写上述内容的另一种方法是使用using语句,它更安全一点:

using (SqlDataReader reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        var id = reader.GetInt32(0);

        // an so on
    }
}

将消除对以下内容的需求:

reader.Close();
reader.Dispose();

因此,如果您愿意,也可以为SqlConnection发出。

答案 1 :(得分:0)