Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1739492
  • 博文数量: 263
  • 博客积分: 1218
  • 博客等级: 少尉
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-19 02:33
文章分类

全部博文(263)

文章存档

2020年(12)

2019年(2)

2018年(10)

2016年(1)

2015年(20)

2014年(115)

2013年(46)

2012年(37)

2011年(20)

分类: 嵌入式

2012-03-06 15:09:08

这两天发现用从数据库里面取数据时,要过四五秒才会把数据显示在DataGridView上,测试一下原来是DataAdapter.fill()要很久时间,而不是语句从数据库里面取数据慢。
private void BtSelectOutputdata_Click(object sender, EventArgs e)   /*查询按钮*/
        {
            string source ="Provider=Microsoft.Jet.OleDb.4.0;" "data source=E:\\MyProgram\\CsAccess\\ConnectAccess\\data.mdb";
            total_page = 77777;
           
          
            using(OleDbConnection conn =new OleDbConnection(source))
            {
               conn.Open();
              
               cur_page = 0;
               string str_total = "select count(*) from result";    /*计算总页数*/
               OleDbCommand cmd_total = new OleDbCommand(str_total, conn);
               total_page = Convert.ToInt32(cmd_total.ExecuteScalar())/NUM_PER_PAGE;
               
               LbReturn.Text = total_page.ToString();
               string select = "select top " NUM_PER_PAGE.ToString() " * from ";/*查询数据 */
               select = @"(";
               string select = @"select  top " (NUM_PER_PAGE * (cur_page 1)).ToString() " * from result order by 日期 desc";
               select = @")";
               select = @"order by 日期 asc";
              
               DataTable dt = new DataTable();
              
               OleDbDataAdapter da = new OleDbDataAdapter(select, conn);
               MessageBox.Show("before fill");
               da.Fill(dt);              /*这里很慢*/
               MessageBox.Show("fill over");
               dataGridView1.DataSource=dt;
              
               conn.Close();
               
            }
        }
 
上面两个消息框中间数据就隔了四五秒。
谢谢朋友告诉我用下面的方法。
解决方法:用DataReader来填充DataSet,不用DataAdapter。
看我的另外一篇。有时间再贴上来。其实直接google一样。
阅读(14436) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~