C#中如何将DataTable保存到数据库?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中如何将DataTable保存到数据库?相关的知识,希望对你有一定的参考价值。
C#中,比如有个DataTbaleA,几万行数据,怎么样快速的把DataTbaleA保存到数据库中,并且数据库创建好一个DataTbaleA名字的表,用INSERT需要一条一条保存,效率太慢。
额。但是如果我是Access数据库,用不了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中的数据批量更新到MYSQL数据库
c#中两个列名相同的datatable,如何将他们数据加到一起?