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();
}
では、どうすればこの不思議な問題を解決できますか?