Access分頁查詢

2021-06-27 07:37:20 字數 2504 閱讀 8339

由於access資料庫內沒有儲存過程一說.

那麼實現它的分頁上效率問題一直都是麻煩事..下面一段**,相當來說算了很高效的了.

如果有什麼更好的方法,請多指教! 謝謝!

呼叫方法

string strsql = " select p.productid,p.proclassid,p.productname,p.proflag,p.datetime,p.productimage,c.proclassname,c.proclasskey,c.proclassdes from productinfo p  " +

" left join proclass c on p.proclassid=c.proclassid ";

string strshow = " productid,productname,datetime,productimage,proflag,proclassname,proclasskey,proclassdes ";

return classfile.accesshelper.executepager(pageindex, pagesize, "productid", strshow, strsql, strwhere, " productid desc ", out pagecount, out recordcount);

///

/// 分頁使用

///

///

///

///

private static string recordid(string query, int passcount)

passcount--; }

}m_conn.close();

m_conn.dispose();

return result.substring(1); }

}///

/// access高效分頁

///

/// 當前頁碼

/// 分頁容量

/// 主鍵

/// 顯示的字段

/// 查詢字串,支援聯合查詢

/// 查詢條件,若有條件限制則必須以where 開頭

/// 排序規則

/// 傳出引數:總頁數統計

/// 傳出引數:總記錄統計

/// 裝載記錄的datatable

public static datatable executepager(int pageindex, int pagesize, string strkey,string showstring, string querystring, string wherestring, string orderstring, out int pagecount, out int recordcount)

) tempvw ", querystring);

oledbcommand cmdcount = new oledbcommand(string.format(" select count(*) as recordcount from ", myvw, wherestring), m_conn);

recordcount = convert.toint32(cmdcount.executescalar());

if ((recordcount % pagesize) > 0)

pagecount = recordcount / pagesize + 1;

else

pagecount = recordcount / pagesize;

oledbcommand cmdrecord;

if (pageindex == 1)//第一頁

from order by ", pagesize, showstring, myvw, wherestring, orderstring), m_conn); }

else if (pageindex > pagecount)//超出總頁數

from order by ", pagesize, showstring, myvw, "where 1=2", orderstring), m_conn); }

else

from order by ", pagelowerbound, strkey, myvw, wherestring, orderstring), pageupperbound);

cmdrecord = new oledbcommand(string.format("select from where in () order by ", showstring, myvw,strkey, recordids, orderstring), m_conn); }

oledbdataadapter dataadapter = new oledbdataadapter(cmdrecord);

datatable dt = new datatable();

dataadapter.fill(dt);

m_conn.close();

m_conn.dispose();

return dt; }

}

Access分頁查詢的效能短板

最近專案頻繁用到了access資料庫。主要還是因為一些規模比較小點的公司沒有專業的技術員,非專業人員都對access比較上手。所以就選了這個資料庫。偏偏資料處理量比較多。就讓我撞上了access這個效能問題。強烈建議在access進行分頁查詢top n的時候,盡量避開not in 通常使用top n...

ACCESS高效分頁

由於access資料庫內沒有儲存過程一說.那麼實現它的分頁上效率問題一直都是麻煩事.下面一段 相當來說算了很高效的了.如果有什麼更好的方法,請多指教 謝謝 呼叫方法 string strsql select p.productid,p.proclassid,p.productname,p.profl...

ACCESS高效分頁

由於access資料庫內沒有儲存過程一說.那麼實現它的分頁上效率問題一直都是麻煩事.下面一段 相當來說算了很高效的了.如果有什麼更好的方法,請多指教 謝謝 呼叫方法 string strsql select p.productid,p.proclassid,p.productname,p.profl...