首先创建一个数据库连接类:SQLHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace insetData { public class SQLHelper { public static readonly string Strconn = "Data Source=LocalHost;database=CardID;uid=sa;pwd=123"; /// <summary> /// 创建SqlConnection对象 /// </summary> /// <returns></returns> public static SqlConnection sqlConn() { return new SqlConnection(Strconn); } /// <summary> /// SQLServer批量插入数据功能 /// 这是SQLServer特有的功能,故不再上层抽象类中编写 /// </summary> /// <param name="dt">数据表</param> /// <param name="tableName">表名称</param> public static void BulkInsert(SqlConnection conn, DataTable dt, string tableName) { if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException("请指定需要插入的数据表"); } var count = dt.Rows.Count; if (count == 0) { return; } if (conn.State == ConnectionState.Closed) { conn.Open(); } //SqlBulkCopy用其他源的数据有效批量加载 SQL Server 表 using (SqlBulkCopy copy = new SqlBulkCopy(conn)) { copy.BatchSize = dt.Rows.Count;//每一批次中的行数。在每一批次结束时,将该批次中的行发送到服务器。 copy.DestinationTableName = tableName;//指定目标表 copy.WriteToServer(dt);//将dt中的所有行复制到SqlBulkCopy对象的DestinationTableName指定的目标表中 conn.Close(); conn.Dispose(); } } /// <summary> /// 创建数据表 /// </summary> /// <param name="columns"></param> public static DataTable CreateTable(IList<string> columns) { var dt = new DataTable(); foreach (var c in columns) { dt.Columns.Add(c); } return dt; } /// <summary> /// 批量插入数据 /// </summary> /// <param name="tableName">数据表</param> /// <param name="columns">字段</param> /// <param name="dataList">数据列表</param> /// <param name="action">具体操作</param> public static void CreateInner<T>(SqlConnection conn, string tableName, IList<string> columns, IList<T> dataList, Action<DataRowWaper, T, int> action) { if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException("需要指定操作的数据表"); } if (columns == null || columns.Count == 0) { throw new ArgumentNullException("数据表列不能为空"); } var dt = CreateTable(columns); if (action != null) { for (var i = 0; i < dataList.Count; i++) { var wapper = new DataRowWaper(dt.NewRow()); action(wapper, dataList[i], i); dt.Rows.Add(wapper.Row); } } BulkInsert(conn, dt, tableName); } } }