c# - 显示从 MySQL 填充数据集的进度

标签 c# mysql dataset progress

我目前正在使用 C# 和 MySQL 数据库后端开发应用程序。

我的程序最终可能会从数据库中加载大量数据并将其添加到要在 DataGridView 中显示的数据集中。我希望能够显示数据集的填充进度,但不确定如何获取它在数据库中的位置的引用。

下面是我目前拥有的代码。

DatabaseWork dbase = new DatabaseWork();
try
{
  dbase.openConnection();
  MySqlDataAdapter myDA = new MySqlDataAdapter();
  myDA.SelectCommand = new MySqlCommand(query, dbase.conn);

  DataTable table = new DataTable();
  myDA.Fill(table);

  BindingSource bSource = new BindingSource();
  bSource.DataSource = table;

  tblDetails.DataSource = bSource;
  //tblGrid.Columns[0].Visible = false;
}
catch (MySqlException ex)
{
  dbase.displayError(ex.Message, ex.Number);
}
finally
{
  dbase.closeConnection();
}

我知道我必须将这部分代码像后台 worker 一样放入线程中,但我如何更改此代码以显示进度。

最佳答案

这个答案可能来得有点晚,但也许对其他人有帮助。

在许多情况下,显示到目前为止读取的记录数就足够了。这可以通过处理 DataTable.RowChanged 事件来完成。从我可以验证的测试实现中,DataAdapter.Fill-Method 添加的每一行都会触发事件。在处理事件时,您可以通过查看 DataTable.Rows.Count-Property 来获取读取的记录数

我通常做的是在后台线程中读取数据,更新标签或列表框条目。实际更新 gui 的方法缓冲对标签的更新,以便 gui 每秒仅更改一次以防止闪烁。

希望这对您有所帮助。

萨沙

关于c# - 显示从 MySQL 填充数据集的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135650/

相关文章:

c# - 脚手架 EntityFramework 6 无法将类型为 'System.Data.Entity.Core.Objects.ObjectContext' 的对象转换为 'System.Data.Objects.ObjectContext'

php - 如何防止刷新时重复插入数据库?

php - 在 codeigniter 中反向通配符搜索

r - 计算数据框中元素的数量

sql - 按每个日期的 ID 和最近的日期连接表

c# - 如何仅将数据库的模式放入数据集中?

c# - 初学者 C# 良好实践

c# - 从 If 语句返回 Int

c# - 从哈希字符串中获取原始密码

java - 安卓 : How to check the TextView value that get from MySQL with string "pending"?