项目很大,需要我做的东西但挺少,还是挺可惜。机会不多 好好把握。
项目目标:从母系统获取数据组成一张表,把数据放入子系统的数据库中,over
项目过程:使用ado.net访问数据库getAllInfos into a table 然后把数据插入系统
项目学习知识:1.大量数据插入 高效快捷的方法
2.progressBar和插入数据的同时进行(多线程)
查询内容:http://blog.csdn.net/jacksonxin/article/details/53889508 C#批量插入大数据到SQL server
http://www.cnblogs.com/luxiaoxun/p/3280146.html C#多线程编程
using System.Data.SqlClient;
using System.Diagnostics;
/// <summary>
/// sqlbulkcopy 方法查询
/// </summary>
/// <param name="dt">插入数据库的table表</param>
/// <returns></returns>
public static string insertBulk(DataTable dt)
{
const string connString = @"数据库链接string";
Stopwatch sw = new Stopwatch();//用于测试运行时间
using (SqlConnection conn = new SqlConnection(connString))
{
SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);//批量加载sql表
bulkCopy.DestinationTableName = "[WuLiu].[dbo].[GoodsInfo]";//服务器上目标表的名称
bulkCopy.BatchSize = dt.Rows.Count;//没一批次的行数
for(int i=0;i<dt.Columns.Count;i++)
{
bulkCopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);//用于让表列名和数据库中表列名一一对应,如果表名不对应会报错
}
conn.Open();
sw.Start();
if(dt!=null&&dt.Rows.Count!=0)
{
bulkCopy.WriteToServer(dt);//执行
sw.Stop();
}
return sw.Elapsed.ToString();
}
}
private void ma()
{
//子线程操作的内容
}
private void button3_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(ma));//新建线程
thread.Start();
for (int i = 0; i < 100; i++)
{
this.progressBar1.Value = i;
Thread.Sleep(100); //以免太快没效果
}
this.progressBar1.Visible = false;
}
浙公网安备 33010602011771号