部分代码如下:
DataTable dt=GetData(); //这里的GetData()为我写的一个获取数据并返回的一个方法
OleDbDataAdapter dap = new OleDbDataAdapter("select * from test where 1=2", mycon);//mycon为连接对象地球人都知道,这里不再定义
OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(dap);
dap.InsertCommand = cmdBuilder.GetInsertCommand();
dap.UpdateCommand = cmdBuilder.GetUpdateCommand();
dap.DeleteCommand = cmdBuilder.GetDeleteCommand();
dap.Update(dt); 
怎样显示其更新的进度?当数据量大时,半天就定住了,也不知道到底更新多少了,非得更新完了才知道。

解决方案 »

  1.   

    做个WaitingDialog
    进度只能是假的吧??看看backgrounworker
    http://www.cnblogs.com/dlwang2002/archive/2006/12/07/585093.html
      

  2.   

    DataTable   dt=GetData();   //这里的GetData()为我写的一个获取数据并返回的一个方法
    OleDbDataAdapter   dap   =   new   OleDbDataAdapter("select   *   from   test   where   1=2",   mycon);//mycon为连接对象地球人都知道,这里不再定义
    OleDbCommandBuilder   cmdBuilder   =   new   OleDbCommandBuilder(dap);
    dap.InsertCommand   =   cmdBuilder.GetInsertCommand();
    dap.UpdateCommand   =   cmdBuilder.GetUpdateCommand();
    dap.DeleteCommand   =   cmdBuilder.GetDeleteCommand();
    dap.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated);
    dap.Update(dt);    private void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
        {
            在这里控制进度条就可以了。
        }
      

  3.   

    winform?webform?
    winform:轻量级的backgrounworker 
    webform:AJAX中的UPDATEPROGRESS
      

  4.   

    OleDbCommandBuilder   cmdBuilder   =   new   OleDbCommandBuilder(dap); 
    dap.InsertCommand   =   cmdBuilder.GetInsertCommand(); 
    dap.UpdateCommand   =   cmdBuilder.GetUpdateCommand(); 
    dap.DeleteCommand   =   cmdBuilder.GetDeleteCommand(); 
    dap.RowUpdated += new System.Data.OleDb.OleDbRowUpdatedEventHandler(dap_RowUpdated);
    dap.Update(dt); 
    void dap_RowUpdated(object sender, System.Data.OleDb.OleDbRowUpdatedEventArgs e)
    {
                if (this.InvokeRequired)
                {
                    this.Invoke(new InvokeCallHandler(this.SetProgressValue));
                }
                else
                {
                    this.SetProgressValue();
                }
    }void SetProgressValue()
    {
                nowln++;
                this.progressBar1.Maximum = retln;
                this.infolab.Text = nowln + "/" + rsCount;
                this.progressBar1.Value = nowln;
    }