C# IDataReader与DataTable;利弊
我正在进行大规模的插入/更新操作 所以我使用的是C# IDataReader与DataTable;利弊,c#,datatable,sqlbulkcopy,idatareader,C#,Datatable,Sqlbulkcopy,Idatareader,我正在进行大规模的插入/更新操作 所以我使用的是SqlBulkCopy SqlConnection myConnection = new SqlConnection(myConnectionString); try { myConnection.Open(); SqlBulkCopy myCommand = new SqlBulkCopy(myConnection); myCommand.DestinationTableName = "myDestinationTab
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
方法
问题:两者的优缺点是什么?哪个更快?在默认情况下,两者的性能应该相似 但是有一个区别,
WriteToServer
使用DataTable
作为参数将插入DataTable
中的所有行,但使用IDataReader
时,复制从读卡器中的下一个可用行开始(默认情况下将设置为第一行)
请记住,
IDataReader
提供了一种只读/仅向前的机制,因此有一个当前位置/行索引的概念,而对于DataTable
则没有这样的概念。随着IDataReader
上的每个Read
行索引移动到下一行 使用DataTable
重载适用于应用程序中已有合适的DT
的情况
而使用IDataReader
重载则适用于存在某些查询的情况(无论是原始查询文本还是构造的命令,都无所谓)。在这种情况下,不需要创建中间数据容器,例如DT
。因此,此重载允许您直接从读取器获取数据
假设您既没有DT
,也没有IDataReader
,那么第二个任务至少应该消耗更少的资源