目前寫的一個程式片段如下:
using (OleDbCommand cmd = new OleDbCommand(“INSERT INTO … ”, connObj))
{
cmd.Connection.Open();
cmd.ExecutionNonQuery();
}
using (OleDbDataAdapter adapter = new OleDbDataAdapter(“SELECT … ”, connString))
{
…
adapter.Fill(dataTable);
…
}
dataTable取得的資料就是會缺少先前INSERT的那筆資料,在Debug時發現INSERT和SELECT之間必須要先停頓一下,SELECT才撈的到那筆資料。經過高手的提點,直接在第4行下面加上cmd.Connection.Close()就解決了,看來cmd物件被釋放時並不會做connection close的動作,而Close()可以確保資料已寫入完畢,避免在單一執行緒的情況下資料還沒寫入就被下一個讀取指令提取資料。