0

INSERT クエリを使用してキューの各データに対して行ごとに行を挿入する代わりに、キュー "<"string">"のアイテムを非同期的にキューに追加しています。if(evtLogQueue.Count==1000) . SQLServerDB へのBulkCopyを使用して、DataTable をさらに一括挿入に使用できるようにします。

私は知りたいのですが、それは可能ですか?はいの場合、どのように?または他の提案はありますか?

サンプルコード:

static Queue<string> evtLogQueue = new Queue<string>();

public static void AddItemsToQueue(string itm)
        {

            evtLogQueue.Enqueue(itm);
            Console.WriteLine("Length of Queue:" + evtLogQueue.Count);

        }
4

2 に答える 2

1

はい、可能です。メソッドにコードを追加することでこれを行うことができますAddItemsToQueue(string itm)

public static void AddItemsToQueue(string itm)
    {
        evtLogQueue.Enqueue(itm);
        // Add the following code
        if (evtLogQueue.Count == 1000)
        {
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("Log");
            foreach (var log in evtLogQueue)
            { 
                DataRow dr = dataTable.NewRow();
                dr["Log"] = log;
                dataTable.Rows.Add(dr);
            }
            evtLogQueue.Clear();     // Most probably you will also need to clear the queue.
            SendBulkData(dataTable); // Send the bulk data
        }
    }
于 2012-07-07T07:39:26.580 に答える
0

それが可能だ。

AddItemsToQueue(string itm) 内で、キュー内の要素の数を確認します。

数値が 1000 になったら、for ループを実行し、データ テーブルにデータを挿入します。

一括コピーを行うには、以下のリンクを確認してください

http://www.codeproject.com/Articles/16922/SQL-Bulk-Copy-with-C-Net

問題が解決しない場合はお知らせください。

于 2012-07-07T07:25:28.767 に答える