C# 控制在sqldataadapter中填充的recrocds数量
我正在用来自远程服务器的数千条记录填充sqldataadapter。在此期间,应用程序将冻结,直到提取数据结束。有时需要几分钟,有时需要更长时间,这取决于服务器的可用性,所以用户永远不知道下载了多少记录以及过程何时完成。出于这个原因,我想实现某种计数器,计算完成下载过程还需要多少记录 以下是我填充sqldataadapter的方式:C# 控制在sqldataadapter中填充的recrocds数量,c#,sqldataadapter,C#,Sqldataadapter,我正在用来自远程服务器的数千条记录填充sqldataadapter。在此期间,应用程序将冻结,直到提取数据结束。有时需要几分钟,有时需要更长时间,这取决于服务器的可用性,所以用户永远不知道下载了多少记录以及过程何时完成。出于这个原因,我想实现某种计数器,计算完成下载过程还需要多少记录 以下是我填充sqldataadapter的方式: void FillDataAdapter(string sQuery) { SqlDataAdapter m
void FillDataAdapter(string sQuery)
{
SqlDataAdapter mySqlDataAdapter;
SqlCommandBuilder mySqlCommandBuilder;
DataTable dataTable;
mySqlDataAdapter = new SqlDataAdapter(sQuery, this.connection);
mySqlCommandBuilder = new SqlCommandBuilder(mySqlDataAdapter);
mySqlDataAdapter.SelectCommand.CommandTimeout = 30;
dataTable = new DataTable();
mySqlDataAdapter.Fill(dataTable);
}
在这一行上,在填充完成之前,应用freezs:
mySqlDataAdapter.Fill(dataTable);
Fill方法具有int返回数据类型,但我只能在填充完成后获取数据适配器中的记录数。通过哪种方式可以在dataadapter中获取当前记录数?我认为这是不可能的,但您可以利用
public int Fill(
int startRecord,
int maxRecords,
params DataTable[] dataTables
)
重载fill方法以获取所需的记录数。您可以在此处使用threadpool异步调用该数据库连接。这里有一些链接供您帮助。 如果您在这里使用计数器,那么您也必须等到所有数据都被提取出来。但是,如果您使用threadpool,那么您不必等待执行这部分代码。当这部分代码执行时,其他部分代码也将执行。提取完所有数据后,可以显示此时的所有数据。您不必担心没有响应或服务器繁忙的问题