C#中如何将DataTable保存到数据库?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中如何将DataTable保存到数据库?相关的知识,希望对你有一定的参考价值。

C#中,比如有个DataTbaleA,几万行数据,怎么样快速的把DataTbaleA保存到数据库中,并且数据库创建好一个DataTbaleA名字的表,用INSERT需要一条一条保存,效率太慢。
额。但是如果我是Access数据库,用不了SqlBulkCopy ,怎么办呢?

参考技术A sqlbulkcopy 神级 数据拷贝
System.Data.SqlClient 命名空间
亲测,100万 数据 20字段 5000毫秒 (5秒)
public void InsertDatatable(Datatable datatableA)

SqlConnection destinationConnection = new SqlConnection(connectionString) //创建一个数据库连接;

destinationConnection.Open();

SqlBulkCopy bulkCopy =new SqlBulkCopy(destinationConnection)// 实例化 sqlbulkcopy;

bulkCopy.DestinationTableName ="dbo.DatatableA";// 目标表名称/

///bulkCopy.ColumnMappings.Add("ProductID", "ProductID");//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
///bulkCopy.ColumnMappings.Add("ProductName", "Name");//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
bulkCopy.WriteToServer(datatableA);//将传入的数据写到数据库;


目标表名 如果在数据库中不存在, 二十需要插入数据时再生成的话,就需要在执行这个 插入之前,先建一张表
string sql="create table xxxxxxx( filed1 varchar(100),........ )" 建好之后再 插入数据 就可以了 。追问

额。但是如果我是Access数据库,用不了SqlBulkCopy ,怎么办呢?

参考技术B 引用
10

charles_y
的回复:是sql
server
吗?bulkcopy
插入到一个临时表然后用Merge
把临时表合并到表中。合并可以判断是插入还是修改,具体参考Merge语句
参考技术C 引用
2

wjq
的回复:创建零时表Blukcopy,把dt导入零时表select
insert和原表关联后再插入
参考技术D bulk insert 参见
http://kb.cnblogs.com/page/73491/追问

额。但是如果我是Access数据库,用不了SqlBulkCopy ,怎么办呢?

追答

其实一条一条insert也效率不低的,如果你的代码是每次插入创建一个新连接那就效率低了(你的是不是?)。可以参考下面的代码
http://stackoverflow.com/questions/7070011/writing-large-number-of-records-bulk-insert-to-access-in-net-c

追问

呵呵,为了用起来方便,操作数据库的类和方法都写成静态的了,每次都创建一个新连接。

本回答被提问者采纳

c#怎么将datatable数据保存到excel中

参考技术A

采用第三方类库工具是一种可快速导出数据的方法,如下spire.xla for .net的导出方法:

//创建一个workbook对象,默认创建03版的Excel

Workbook workbook = new Workbook();

 

//指定版本信息,07及以上版本最多可以插入1048576行数据

workbook.Version = ExcelVersion.Version2013;

 

//获取第一张sheet

Worksheet sheet = workbook.Worksheets[0];

 

//得到在datatable里的数据

DataTable dt = GetDataTable();

 

//从第一行第一列开始插入数据,true代表数据包含列名

sheet.InsertDataTable(dt, true, 1, 1);

 

//保存文件

workbook.SaveToFile("ExportDataToExcel.xlsx",ExcelVersion.Version2013);

代码整理参考自原文。

以上是关于C#中如何将DataTable保存到数据库?的主要内容,如果未能解决你的问题,请参考以下文章

C# 问题:如何将在 DataGridView 中所做的更改保存回使用的 DataTable?

C# DataTable 更新 Access 数据库

C#如何将datatable中的数据批量更新到MYSQL数据库

c#中两个列名相同的datatable,如何将他们数据加到一起?

如何在.net 2.0中将数据从数据库或DataTable保存到Excel文件而没有响应

在C#中怎样把数据库中的数据添加到DataTable中