mdb的批量查询语句封装成datatable的效率特别卡 就是因为 access不能批量执行sql 所以 现在就只能
public static DataTable getMdbDataTable(string fileNamePath, List<string> strSql)
{
DataTable dt = new DataTable();
string ConnectionStringMDB = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", fileNamePath);
OleDbConnection cnMdb = new OleDbConnection(ConnectionStringMDB);
cnMdb.Open();
try
{
for (int i = 0; i < strSql.Count; i++)
{
OleDbDataAdapter adapter = new OleDbDataAdapter(strSql[i], cnMdb);
adapter.Fill(dt);
}
}
catch (Exception ex)
{
Sql.Error = ex.Message;
}
finally
{
cnMdb.Close();//关闭数据库连接
cnMdb.Dispose();
}
return dt;
} 这样 但是 数据量一大就卡死。求优化方案
这是一个写得比较差的函数。
1、完全看不懂为什么SQL要放在LIST里面,就是你所指的批量SQL查询吗?
2、如果是不同的查询语句,查询不同的数据表,应该是要放在不同的DataTable里面,所以如果有函数,也应该是这样的
public static DataTable getMdbDataTable(string fileNamePath, string strSql)
或者
public static DataTable getMdbDataTable(OleDbConnection conn, strSql)
3、数据量一大就卡死,是UI卡死,还是什么卡死?数据量多大?会不会侧漏,最好选择夜用型加大带护翼的。