Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 除非我单步执行代码,否则数据库的更新不会显示在Datagrid中_C# - Fatal编程技术网

C# 除非我单步执行代码,否则数据库的更新不会显示在Datagrid中

C# 除非我单步执行代码,否则数据库的更新不会显示在Datagrid中,c#,C#,这是我以前问过的同一个应用程序。我有一个Access数据库,我使用数据适配器、数据表、OleDbCommandBuilder、数据网格和一些文本框来显示数据库中的一行。数据网格的数据源设置为数据表: DataGrid1.DataSource=dTable;无论我对数据库做什么,它都会自动反映在数据网格中 我有一个按钮来运行一些测试代码,使用我自己的sql命令对数据库中的记录进行有条件的更改。我正在使用连接对象和以下方法创建和执行我的命令: dAdapter.UpdateCommand = con

这是我以前问过的同一个应用程序。我有一个Access数据库,我使用数据适配器、数据表、OleDbCommandBuilder、数据网格和一些文本框来显示数据库中的一行。数据网格的数据源设置为数据表: DataGrid1.DataSource=dTable;无论我对数据库做什么,它都会自动反映在数据网格中

我有一个按钮来运行一些测试代码,使用我自己的sql命令对数据库中的记录进行有条件的更改。我正在使用连接对象和以下方法创建和执行我的命令:

dAdapter.UpdateCommand = connection.CreateCommand();
dAdapter.UpdateCommand.CommandText = sql;
dAdapter.UpdateCommand.ExecuteNonQuery();
dTable.Clear(); 
dAdapter.Fill(dTable);
dataGrid1.DataSource = dTable;
这里是关键,如果我设置一个断点并逐步完成代码,当我回到表格时,网格显示更新,如果我将文本框移动到已更改的记录,它显示更改/更新。如果我去掉断点并运行应用程序,网格和文本框都将反映更改。如果我再次点击按钮再次运行相同的代码,那么它将反映所有内容。或者,如果我关闭应用程序并再次运行,它将显示更改。如果我再次设置一个断点并运行到断点,然后单步走几行,然后F5运行,更改将反映在网格和文本框中。如果我运行到相同的断点,然后按F5继续,那么网格和文本框将不会显示更改,就像我刚刚正常运行应用程序一样

我尝试过使用网格的刷新并将源设置为null,然后返回到数据表。什么都不管用!啊!这似乎是一个刷新问题,因为当我一步一步地浏览代码时,它会工作。尽管文本框也没有反映这些更改。但是,与正常运行代码相比,单步执行代码时有些不同

有谁能帮忙吗


谢谢

似乎没人想碰这个…:这似乎是一个时间问题。查询的执行需要足够的时间,使得执行行后面的代码在查询命令完成之前由C执行,因此在数据适配器填充数据表时不会显示对数据库的更改。你可能不喜欢这句话,但乍一看,这似乎是微软的愚蠢至极。如果我将messagebox放在dAdapter.UpdateCommand.ExecuteOnQuery之后;在调试中,一切都可以运行,无需单步执行代码。但是如果我在消息框中点击ok太快,则不会显示更新的数据库。说到这里,有人知道数据适配器的任何方法、事件或属性可以用来暂停代码执行,直到查询完成吗????????