控制sqldataadapter中记录的记录数

时间:2014-10-29 06:59:01

标签: c# sqldataadapter

我正在从远程服务器填充数百条记录的sqldataadapter。在此期间,应用程序冻结,直到提取数据结束。有时需要花费几分钟时间,这取决于服务器的可用性,因此用户永远不会知道下载了多少记录以及何时完成该过程。出于这个原因,我想实现一些计数器剩余的记录以完成下载过程。

这就是我填写sqldataadapter的方法:

        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中的当前记录数量?

2 个答案:

答案 0 :(得分:0)

我认为这是不可能的,但你可以利用

public int Fill(
    int startRecord,
    int maxRecords,
    params DataTable[] dataTables
)

重载填充方法以获取所需的记录数。

答案 1 :(得分:0)

您可以在此处使用threadpool异步调用该数据库连接。以下是您的帮助链接。 http://msdn.microsoft.com/en-us/library/3dasc8as.aspx http://www.codeproject.com/Articles/7933/Smart-Thread-Pool

如果你在这里使用计数器,那么你必须等到所有数据都被提取出来。但是如果使用线程池,则不必等待执行该部分代码。当执行这部分代码时,代码的其他部分也将被执行。获取所有数据后,您可以显示当时的所有数据。您不必担心没有响应或服务器繁忙的问题。