2014-10-27 87 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

相关问题