2014-10-27 88 views
0

我搜索並檢查,但沒有看到我需要什麼。我正在使用數據適配器的UpdateCommand的ExecuteNonQuery來更新本地Access數據庫。當我運行代碼時,ExecuteNonQuery在執行下一行代碼之前似乎沒有完成,因此更新的數據庫不會反映在我的網格或我的文本框中。如果我在ExecuteNonQuery之後放置一個消息框,那麼當我在消息框中點擊ok時,其餘代碼就會執行,並且更新的數據庫會反映在我的網格和文本框中。或者,如果我在調試中逐步執行代碼而沒有使用消息框拖延執行,則數據庫更新將反映在我的表單上。但是如果我在查詢後沒有任何東西的情況下運行代碼來減慢速度或停止它,則更新不會顯示在我的控件中。當ExecuteNonQuery完成之前需要進行下一行代碼

OleDbConnection connection = new OleDbConnection(connString); 
string sql = "Update Table1 set Country = '" + txtNewText.Text + "' where SomeNum = 
1111";   

connection.Open(); 
dAdapter.UpdateCommand = connection.CreateCommand(); 
dAdapter.UpdateCommand.CommandText = sql;    
dAdapter.UpdateCommand.ExecuteNonQuery(); 

//MessageBox.Show("Pause"); 

dTable.Clear(); //Clear or it will add everything to what was there. 
dAdapter.Fill(dTable); 

row = dTable.Rows[0]; 
txtCompany.Text = row["Name"].ToString(); 
txtGenre.Text = row["Job"].ToString(); 
txtId.Text = row["Id"].ToString(); 
txtSomeNum.Text = row["SomeNum"].ToString(); 
txtCountry.Text = row["Country"].ToString(); 

我假設在我重新填充數據表之前沒有完成更新查詢。有人可以幫助我這個。我尋找的東西顯示更新查詢的狀態,但沒有看到我需要什麼。我在這裏想念什麼?

謝謝!

VH


14年10月28日昨天晚上,我dAdapter.UpdateCommand.ExecuteNonQuery之後加入dAdapter.UpdateCommand.ExecuteNonQuery()();那麼一切工作。我不確定這是否花了足夠的時間讓查詢完成,從而導致更新顯示,或者它只是一些僥倖的「樂隊助手」。然後我用connection.Close()替換了它。並且這也起作用。再次......我不知道在移動到下一行代碼之前關閉連接是否導致查詢結束並關閉連接,或者如果這也只是「欺騙」它的工作。我看到其他人在尋找答案時遇到類似的問題,但我沒有看到任何人解釋問題是什麼,爲什麼發生這種情況或最合適的解決方案。

+0

看看這個:http://stackoverflow.com/questions/6374911/multiple-concurrent-calls-to-sqlcommand-beginexecutenonquery-using-same-sqlconne – Avia 2014-10-27 22:22:01

回答

0

您應該使用OleDbDataReader,因爲您沒有使用SQL

提供從數據源讀取只向前流數據行的方法。

一個例子:

using (OleDbConnection connection = new OleDbConnection(connectionString)) 
{ 
    OleDbCommand command = new OleDbCommand(queryString, connection); 

    connection.Open(); 
    OleDbDataReader reader = command.ExecuteReader(); 

    while (reader.Read()) 
    { 
     Console.WriteLine(reader[0].ToString()); 
    } 
    reader.Close(); 
} 

這將通過各指定列迭代讓你填寫你的資料。文檔可以找到here

+0

謝謝格雷格。我試圖探索/學習操縱數據庫的所有不同方式。我會嘗試你的建議,但我仍然想知道如何解決我要學習如何使用它以及這種方法的優點和缺點......它更新了數據庫,但它似乎是一個計時問題。當你使用消息框逐步瀏覽代碼或hault代碼時,它會起作用。似乎必須有一種方法來使用這個,我必須錯過一些東西... – valhalla 2014-10-27 22:50:23

+0

我剛剛加入了以下內容 – valhalla 2014-10-27 23:11:15

+0

對不起...我只是增加了以下內容: – valhalla 2014-10-27 23:11:48

相關問題