1

MySql内のデータベースにデータを挿入するメソッドがありますfor loop

挿入の量が多くなる可能性があるため、挿入中にプログラムがフリーズします。

ということで、入れてみたかったのBackgroundWorkerですが、なかなかうまくいきません...

いくつかの挿入の後、接続が既に開かれているという例外が発生します

これが私がそれを行う方法です:

if (dbPos.connOpen())
{
    // inserts one row, works fine because data is present in db
    dbPos.checkOut(prijs, wie);

    // this works for a few inserts, 
    // but after a couple it will tell me my conn is already open
    worker.RunWorkerAsync(); // inserts many rows
}
dbPos.connClose();

私のBackgroundWorker方法:

void worker_DoWork(object sender, DoWorkEventArgs e)
{
    for (int i = 0; i < chartList.Count; i++)
    {
        switch (this.countChart(i))
        {
            ... Do work ... // insert rows
        }
    }
}

そして、実際にデータベースに値を挿入する私の方法:

using (MySqlCommand cmd = new MySqlCommand(query, conn))
{
    ... parameters ....
    cmd.ExecuteNonQuery();
}

では、どうすればこの不思議な問題を解決できますか?

4

1 に答える 1