首页 新闻 会员 周边

mdb的批量查询语句封装成datatable的效率问题

0
[已关闭问题] 关闭于 2015-10-26 11:03

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;
        } 这样 但是 数据量一大就卡死。求优化方案

差生的主页 差生 | 初学一级 | 园豆:3
提问于:2014-10-30 18:10
< >
分享
所有回答(1)
0

这是一个写得比较差的函数。

1、完全看不懂为什么SQL要放在LIST里面,就是你所指的批量SQL查询吗?

2、如果是不同的查询语句,查询不同的数据表,应该是要放在不同的DataTable里面,所以如果有函数,也应该是这样的

public static DataTable getMdbDataTable(string fileNamePath, string strSql)

或者

public static DataTable getMdbDataTable(OleDbConnection conn, strSql)

3、数据量一大就卡死,是UI卡死,还是什么卡死?数据量多大?会不会侧漏,最好选择夜用型加大带护翼的。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-10-31 09:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册