#region 批量導入DataTable 未使用事務 /// <summary> /// 批量導入DataTable 未使用事務 /// </summary> /// <param name="dt">DataTable數據表</param> /// <param name="tableName">表名</param> /// <param name="dtColum">列名</param> public Boolean InsertTable(DataTable dt, string tableName, DataColumnCollection dtColum){ //打開數據庫 GetConn(); try { //聲明SqlBulkCopy ,using釋放非託管資源 using (SqlBulkCopy sqlBC = new SqlBulkCopy(sqlConn)) { //一次批量的插入的數據量 //sqlBC.BatchSize = 1000; //超時以前操做完成所容許的秒數,若是超時則事務不會提交 ,數據將回滾,全部已複製的行都會從目標表中移除 //sqlBC.BulkCopyTimeout = 60; //設定 NotifyAfter 屬性,以便在每插入10000 條數據時,呼叫相應事件。 //sqlBC.NotifyAfter = 10000; // sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); //設置要批量寫入的表 sqlBC.DestinationTableName = tableName; //自定義的datatable和數據庫的字段進行對應 //sqlBC.ColumnMappings.Add("id", "tel"); //sqlBC.ColumnMappings.Add("name", "neirong"); for (int i = 0; i < dtColum.Count; i++) { sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString()); } //批量寫入 sqlBC.WriteToServer(dt); } // conn.Dispose(); //GetConn(); return true; } catch { return false; } finally { //關閉數據庫 sqlConn.Close(); } } #endregion