注册 登录
编程论坛 C# 论坛

如何用C#向Access中快速存储大量数据

lj_a_b 发布于 2013-09-27 11:09, 1448 次点击
如题,重点是【快速】。。。
我用的是C#的数据库事务,数据量大的时候Update时间太长了,哪位高手帮帮忙啊,感激不尽
5 回复
#2
sbadwaps2013-10-18 21:33
          //这是我一个上传大量数据到服务库数据库的代码,速度还可以,你改改应可以使用,要是存到本地速度应该更快
//先复制引用,一个一个删除,看是那一个才真正需要的引用
using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.OleDb;



            OleDbConnection ca = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + Application.StartupPath + "\\数据库\\数据\\数据库名称.mdb;Jet OLEDB:Engine Type=5");
            ca.Open();
            OleDbCommand Cmd = new OleDbCommand("select * from 表名称", ca);//这是一个操作对象,当前SQL语句为操作命令,也就是以这个命令操作上面连接通道的数据源
            OleDbDataReader Drr = Cmd.ExecuteReader();//通过方法ExecuteReader获取数据到SqlDataReader对象
            DataTable dt = new DataTable();//建立一个内存数据表
            dt.Load(Drr);  //加载数据到内存表
            //  上面是先生成一个dt表(准备上传的表)
            //下面进行上传
            string conname = "";
            SqlConnection conn = new SqlConnection(DataSou.Path);//DataSou.Path为连接数据库字符串
            conn.Open();
            using (System.Data.SqlClient.SqlBulkCopy sqlBC = new System.Data.SqlClient.SqlBulkCopy(conn))
            {
                sqlBC.BatchSize = 100000;//指示每10万条一个事务并提交
                sqlBC.BulkCopyTimeout = 60;//指示60秒按超时处理
                sqlBC.DestinationTableName = "要导入数据的表名称";//指示将数据导入SQL表名称
                for (int i = 1; i < dt.Columns.Count; i++)
                {
                    conname = dt.Columns[i].ColumnName;
                    sqlBC.ColumnMappings.Add(conname, conname);//字段与字段匹配
                }
                sqlBC.WriteToServer(dt);//写入数据库。其中dt是预先构建好的DataTable
            }
            ca.Close();
            conn.Close();
            MessageBox.Show("数据上传完成");  

[ 本帖最后由 sbadwaps 于 2013-10-18 21:39 编辑 ]
#3
dxggjc2013-10-23 20:09
厉害
#4
delta2013-10-24 09:51
学习一下。
#5
cooolcode2013-10-24 20:13
先复制引用,一个一个删除,看是那一个才真正需要的引用,真实高人
#6
hzm7162013-10-26 11:20
我是新人,多多学习
1