当前位置:  开发笔记 > 编程语言 > 正文

从c#批量数据库插入的最佳方法是什么?

如何解决《从c#批量数据库插入的最佳方法是什么?》经验,为你挑选了3个好方法。

我如何/什么是批量数据库插入的最佳方式?

在C#中,我正在迭代一个集合并为集合中的每个项调用插入存储过程.

如何在一次数据库调用中发送所有数据?

例如,我说我有一个List包含10个项目的人员列表().我目前正在调用InsertPerson存储过程10次.我想将此减少到1个电话.

我正在使用MS SQL Server 2005.



1> JohnB..:

CsharperGuyInLondon,这是SqlBulkCopy代码的一个简单示例:

using System.Data.SqlClient;

DataTable table = new DataTable("States");
// construct DataTable
table.Columns.Add(new DataColumn("id_state", typeof(int))); 
table.Columns.Add(new DataColumn("state_name", typeof(string)));

// note: if "id_state" is defined as an identity column in your DB,
// row values for that column will be ignored during the bulk copy
table.Rows.Add("1", "Atlanta");
table.Rows.Add("2", "Chicago");
table.Rows.Add("3", "Springfield");

using(SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
  bulkCopy.BulkCopyTimeout = 600; // in seconds
  bulkCopy.DestinationTableName = "state";
  bulkCopy.WriteToServer(table);
}



2> Marc Gravell..:

好吧,10个项目不是我称之为批量,但对于较大的集合,SqlBulkCopy是你的朋友.你需要做的就是给它一个DataTable或一个IDataReader(我喜欢的选项,'我喜欢流API).我在这里做了类似的事情(你可以忽略xml方面 - 只是SimpleDataReader的子类).



3> MichaelGG..:

.NET SqlBulkCopy类运行良好.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有