这两天发现用从数据库里面取数据时,要过四五秒才会把数据显示在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一样。
阅读(14472) | 评论(0) | 转发(0) |