使用してシステムを。 使用してSystem.Collections.Genericを。 使用してSystem.ComponentModelを。 使用してSystem.Dataを。 使用System.Data.SqlClientのを。 使用したSystem.Diagnosticsを。 使用System.Drawingを。 使用してSystem.Linqのを。 使用してSystem.Textのを。 使用してのSystem.Windows.Formsを。 名前空間Winフォーム测试插入 { パブリック 部分 クラスをForm1:フォーム { 公共のForm1() { のInitializeComponent(); } 文字列のConnectionString =ストリング .Format(" データソース= {0};データベース= {1}、UID = SA; PWD = 123456 "、" 192.168.200.101 "、" BulkTestDB " )。 文字列 ERRO = 文字列.Empty。 プライベート ボイドのbutton1_Click(オブジェクト送信者、のEventArgs電子) { VAR T = MSSQLHelper.TestConnection(アウトERRO、のConnectionString)。 // inset_1000_data(); 14秒 bulk_1000_data()。/// /111.8871总毫秒数 } 公共 のボイドbulk_1000_data() { // 条件がデータテーブルに構築されなければならない @ ; VAR DT = 0トップB_ProductCode SELECT * FROM // クエリの同じ構造 // キーがメインデータ5-10に挿入された場合、第二の主キーを挿入する9 -11; 9-11データに挿入されません。 データテーブルDT = 新しい新しいデータテーブル(); dt.Columns.AddRange(新しい新規のDataColumn [] { 新新のDataColumn(" 同上"、typeof演算(INT ))、 新たな新のDataColumn(" ユーザー名"、typeof演算(文字列))、 // 新しいのDataColumn( "Pwdの"、typeof演算(文字列)) }); 以下のために(INT iが= 0 ; I < 1000年 ; I ++ ) { たDataRow R = dt.NewRow()。 R [ 0 ] = I。 R [ 1 ] = ストリング .Format(" USER- {0} " 、I)。 // R [2] = String.Formatの( "Pwd- {0}"、I)。 dt.Rows.Add(R) } 二重 test_time。 // データ5553345の総数は、500万個のデータ System.Diagnostics.Stopwatchウォッチ= 新新System.Diagnostics.Stopwatch(); watch.Start(); // 実行するために、タイムコードの監視を開始 // ----- ------------------------------------ // | // | BulkToDB(DT); // | // | // ------------------------------------------- ウォッチ。 STOP(); // 監視停止 のTimeSpanのTimeSpan = watch.Elapsedを; // 派生測定の現在のインスタンスの合計時間取得 test_timeをTimespan.TotalMilliseconds =; // ミリ秒の総数 MessageBox.Show(test_time.ToString()); // ミリ秒111.8871総数 } 公共 ボイドinset_1000_data() { ダブル test_time; // データ5553345の総数、500万データ System.Diagnostics.Stopwatchウォッチ= 新新System.Diagnostics.Stopwatch(); watch.Start(); // 実行するために、タイムコードの監視を開始 // ------------------ ----------------------- // | // | のための(int型 I = 0; I < 1000年。I ++ ) { StringBuilderのSB = 新規のStringBuilder(); sb.AppendFormat(" USE [BulkTestDB] " )。 sb.AppendFormat(" INSERT INTO [DBO] [BulkTestTable]。" ); sb.AppendFormat(" ([ID] " ); sb.AppendFormat("[ ユーザー名] " ); sb.AppendFormat("[Pwd の])" )。 SB。 " VALUES " ); sb.AppendFormat(" ({0} " 、I); sb.AppendFormat(" '名前{0}' " 、I); sb.AppendFormat("「PWD {0})" 、I)。 MSSQLHelper.ExecuteNonQuery(sb.ToString()、アウトのConnectionString、ERRO)。 もし(!ERRO = 文字列.Empty) { MessageBox.Show(ERRO)。 休憩; } } // | //| // ------------------------------------------- watch.Stop( ); // ストップ監視 のTimeSpanのTimeSpan = watch.Elapsedを; //は、測定結果の現在のインスタンスの合計時間取得 test_time = timespan.TotalMillisecondsを; // ミリ秒の総数 MessageBox.Show(test_time.ToString()); // 14659.1165合計ミリ } // 使用バルクインサート[速く] #region [挿入利用バルク] ボイドBulkToDB(データテーブルDT) { ストップウォッチSW = 新しい新しい =ストップウォッチ(); SqlConnectionのsqlconn 新しいSqlConnectionオブジェクト(のConnectionString); SqlBulkCopyバルク・コピー = 新しいSqlBulkCopy(sqlconn)。 bulkCopy.DestinationTableName = " BulkTestTable "。// 表名 bulkCopy.BatchSize = dt.Rows.Count。 // 数据量 のtry { sqlconn.Open(); もし(DT =!ヌル && dt.Rows.Count!= 0 ) { bulkCopy.WriteToServer(DT)。 } } キャッチ(例外例) { Console.WriteLineを(ex.Message)。 } 最後に { sqlconn.Close()。 もし(!バルク・コピー= ヌル) { bulkCopy.Close(); } } } #endregion } }
転送HTTPS:// www.cnblogs.com/zoro-zero/p/7743164.html