![]() |
#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 编辑 ] |
我用的是C#的数据库事务,数据量大的时候Update时间太长了,哪位高手帮帮忙啊,感激不尽
