//这是我一个上传大量数据到服务库数据库的代码,速度还可以,你改改应可以使用,要是存到本地速度应该更快
//先复制引用,一个一个删除,看是那一个才真正需要的引用
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 编辑 ]