【发布时间】:2012-02-02 14:42:17
【问题描述】:
我知道 DataAdapter 存在性能问题,但有什么方法可以更快地解决这个问题吗?目前,DataAdapter.Fill 方法在 3000 条记录上需要 5-6 秒,这对我的应用程序来说太慢了。如果我删除 Fill 行并只执行 SQL(使用 SQLCE),则需要 20 毫秒,所以我猜查询不是问题。我尝试在数据表上添加BeginLoadData,但这对性能没有影响。
using (SqlCeConnection con = new SqlCeConnection(conString))
{
con.Open();
using (SqlCeDataAdapter dAdapter= new SqlCeDataAdapter())
{
using (SqlCeCommand com = new SqlCeCommand(query, con))
{
com.Parameters.Add("uname", textBox1.Text);
dAdapter.SelectCommand = com;
dAdapter.SelectCommand.Connection = con;
DataTable dTable = new DataTable();
dAdapter.Fill(dTable);
dataGridView1.DataSource = dTable;
}
}
}
有没有更好的方法来填充 DataGridView 或加速 Fill 方法?
【问题讨论】:
-
也许是连接速度有问题?
-
你能把代码粘贴到你声明和填充 dTable 的地方吗?此外,如果您正在执行更新、删除或插入等操作,请改用 DataReader .....快得多
-
我添加了额外的代码并删除了
BeginLoadData。我将数据库移动到本地计算机以确保它不是连接问题。 @DJ Kraze,我虽然更新、删除和插入主要用于 DataAdapters,而 DataReaders 用于只读内容? -
如果你注释掉
dataGridView1.DataSource = dTable;这一行并离开dAdapter.Fill(dTable);是什么时候?我想它的绑定数据做 DGV 可能很慢,没有填满表格。 -
@mj82 - 不,我认为它也可能是 DGV,但如果我删除 DataSource,时间是一样的。肯定是 Fill 方法导致延迟。
标签: c# performance datagridview sql-server-ce dataadapter