【问题标题】:IDataReader vs DataTable; pros and consIDataReader 与数据表;利弊
【发布时间】:2015-05-25 14:56:40
【问题描述】:

我正在做一个大规模的插入/更新操作。

所以我使用SqlBulkCopy

SqlConnection myConnection = new SqlConnection(myConnectionString);

try
{
    myConnection.Open();
    SqlBulkCopy myCommand = new SqlBulkCopy(myConnection);

    myCommand.DestinationTableName = "myDestinationTableName";

    //Below method has four overloads; 
    //of which I am interested in the two mentioned below.
    myCommand.WriteToServer();

    myCommand.Close();
}
finally
{
    myConnection.Close();
}

但我偶然发现了这两个版本的WriteToServer 方法。

  1. SqlBulkCopy.WriteToServer Method (IDataReader)

  2. SqlBulkCopy.WriteToServer Method (DataTable)

问题:一个比另一个有什么优点和缺点?哪个更快?

【问题讨论】:

    标签: c# datatable sqlbulkcopy idatareader


    【解决方案1】:

    在默认情况下,两者应该具有相似的性能,否则horses..

    但是有一个区别,WriteToServerDataTable 作为参数将插入来自 DataTable 的所有行,但使用 IDataReader 复制从阅读器中的下一个可用行开始 (将设置默认情况下到第一行)

    请记住,IDataReader 提供只读/只进机制,因此存在当前位置/行索引的概念,而 DataTable 则没有这样的东西。随着IDataReader 上的每个Read 行索引移动到下一行。

    【讨论】:

      【解决方案2】:

      DataTable 的重载适用于当您的应用程序某处已经有合适的DT 的情况。

      反过来,IDataReader 的重载适用于有一些查询(原始查询文本或构造的命令都没有关系)的情况。在这种情况下,不需要创建中间数据容器,例如DT。因此,此重载允许您直接从阅读器获取数据。

      假设你既没有DT,也没有IDataReader,那么第二个至少应该消耗更少的资源。

      【讨论】:

        猜你喜欢
        • 2012-01-27
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 2011-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多