首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IDataReader与DataTable;利弊

IDataReader与DataTable;利弊
EN

Stack Overflow用户
提问于 2015-05-25 14:56:40
回答 2查看 1.6K关注 0票数 1

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

所以我正在使用SqlBulkCopy

代码语言:javascript
复制
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方法(IDataReader)
  2. SqlBulkCopy.WriteToServer方法(DataTable)

问:一个相对于另一个的利弊是什么?哪个更快?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-25 15:02:32

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

但是,有一个不同之处,以WriteToServer为参数的DataTable将插入DataTable中的所有行,但是IDataReader副本以读取器中的下一个可用行开始(默认情况下这将设置为第一行)。

请记住,IDataReader提供了只读/前向机制,因此存在当前位置/行索引的概念,而对于DataTable则不存在这种情况。随着ReadIDataReader行的移动,索引将移到下一行。

票数 2
EN

Stack Overflow用户

发布于 2015-05-25 15:10:44

当您已经在应用程序中的某个地方拥有合适的DataTable时,DT重载是针对这些情况的。

IDataReader的重载反过来也适用于某些查询(无论是原始查询文本还是构造的命令,这都不重要)。在这种情况下,创建中间数据容器(如DT )是不必要的。因此,这种重载允许您直接从读取器获取数据。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30441086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档