问题描述
我想实现这样一个效果:程序要实现从数据库里根据条件提取数据,通过循环的方式提取,提取的同时在下面文本框里显示提取的进度,即,找个一个在下面文本框里显示出来,同时加个换行符这样最后的效果是,文本框就是一条条找到的数据要实现这个效果是不是要用到多线程的方式,不太明白,请高手指教。。。不胜感激。。。。
解决方案
解决方案二:
不用多线程也可以先selectcount(*)from表where条件获取记录条数来设置进度条最大值然后select*from表where条件用DataReader来读取,读一条,进度条Value+1,同时把读取的内容加到文本框里并换行
解决方案三:
mark,多线程弄进度条。上面的方法可行,不过数据库可能要打开很长时间
解决方案四:
//获取数据publicDataTableGetTable(stringmySql){conn=newSqlConnection("datasource=.;uid=sa;pwd=;database=zcgy21");conn.Open();SqlDataAdaptermyDapter=newSqlDataAdapter(mySql,conn);DataSetds=newDataSet();myDapter.Fill(ds);returnds.Tables[0];}//button事件privatevoidbuttonTest_Click(objectsender,System.EventArgse){//设置textBox属性this.textBox2.Multiline=true;this.textBox2.ScrollBars=System.Windows.Forms.ScrollBars.Both;//设置进度条的范围上限DataTabledtCount=GetTable("selectcount(*)from表");intmaxValue=Convert.ToInt32(dtCount.Rows[0][0].ToString());this.progressBar1.Maximum=maxValue;DataTabledtText=GetTable("select字段Afrom表");//填充textBoxfor(inti=0;i<maxValue;i++){this.textBox2.Text+=dtText.Rows[i][0].ToString().Trim()+"rn";this.textBox2.Refresh();this.progressBar1.Value+=1;}}
解决方案五:
楼上的方法可行,不过最好把下面的函数加句关闭数据库连接,如果再加上trycatch就更规范了//获取数据publicDataTableGetTable(stringmySql){conn=newSqlConnection("datasource=.;uid=sa;pwd=;database=zcgy21");conn.Open();SqlDataAdaptermyDapter=newSqlDataAdapter(mySql,conn);DataSetds=newDataSet();myDapter.Fill(ds);conn.Close();//关闭连接conn.Dispose();//释放对象returnds.Tables[0];}