在C#中,我有一种将字符串值数组插入到sql db中的方法。看起来像这样
void ProcessRow(string[] row)
{
using (SqlConnection myConnection = new SqlConnection("myConnectionString"))
{
myConnection.Open();
var myCommand = new SqlCommand("INSERT INTO mytable bla bla bla using content of row"), myConnection);
myCommand.BeginExecuteNonQuery();
}
}
在循环中调用方法ProcessRow(string[] row)
以插入多个不同的行。但是,执行代码后,没有将任何内容添加到mytable中。当我每次插入后让ProcessRow(string[] row)
等一下时,如下所示
void ProcessRow(string[] row)
{
using (SqlConnection myConnection = new SqlConnection("myConnectionString"))
{
myConnection.Open();
var myCommand = new SqlCommand("INSERT INTO mytable bla bla bla using content of row"), myConnection);
myCommand.BeginExecuteNonQuery();
System.Threading.Thread.Sleep(100);
}
}
然后一切正常,我的行添加到mytable中。
我的问题是:在不添加sleep(100)的情况下,第一种方法出了什么问题?感觉好像存在某种并发问题,但是我看不到这是怎么可能的,因为每个插入都包含在using(){}中。