国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

分頁顯示從數據庫中讀出的記錄

2019-11-17 06:11:11
字體:
來源:轉載
供稿:網友
  現象:

  在用JDBC訪問某個數據庫,并讀出一個ResultSet數據記錄集時,假如記錄數太大,則會占用客戶端(運行java程序的機器)的大量內存(假如客戶端是某個大企業的營業部門的代理點分機,則有可能java程序會占用完全部內存,然后報錯),并且會造成客戶端負載過重,運行速度極度緩慢(在sybase數據庫中,我曾做過一個測試。選擇某個大數據記錄,SQL語句運行完需要4分鐘,而在java客戶端完全顯示出來,則需要將近10分鐘)。

  解決方案:

  給用戶提供一個可選擇分頁顯示的選項,假如用戶不想分頁顯示則完全顯示,否則分頁顯示。

  1.定義一個分頁數全局常量,即每頁顯示的數據條數。


  PRivate final static int SKip = 100;

  2.定義一個確定某個分頁條數的全局變量,即該顯示頁的當前顯示數據條數。


  private static int cur = 0;


  3.定義一個ResultSet全局變量,以便多次使用


  private static java.sql.Result rs = null;


  4.打開一個數據庫連接[/pre]


  Class.forName( sqlDriver );
  java.sql.Connection conn = DriverManager.getConnection( URL, (String)userName,(String)Passwd)
  Statement stmt = conn.createStatement();
  String searchSql = "......";
  rs = stmt.executeQuery(searchSql);







  5.獲取查詢結果集數據(一般是在查詢按鈕的響應事件函數里)


  ......
  nextButton.setEnable(true);
  cur = 0;
  while( cur < SKIP && rs.next() ){
  cur ++ ;
  .....(獲取rs中的記錄,存入java程序的變量中)
  }


  6.顯示下一頁的結果集數據(一般是在下頁按鈕的響應事件函數里)


  if( rs.getRow() == 0 )
  {
  nextButton.setEnable(false);
  closeConnection(); --rs的cursor已經到了最后,結果集顯示完畢,關閉此次的連接
  }
  cur = 0;
  if(rs != null && rs.getRow() > 0)
  {
  ....將上頁顯示的內容清除
  while(cur < SKIP && rs.next() )
  {
  cur ++ ;
  .....(獲取結果集中的記錄,存入java程序的變量中)
  }
  }


  缺陷:

  此方法根據2.0版本的JDBC(具體和JDBC驅動程序的提供商有關)之前的ResultSet類產生,因為ResultSet無法將已經顯示的結果集回滾,所以此法只能按照ResultSet類的定義,從左往右、從前往后的瀏覽數據結果。無法動態顯示指定任意前后的結果集數據。







發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芒康县| 宁晋县| 清丰县| 浦江县| 惠来县| 如皋市| 洪江市| 萝北县| 禹城市| 黎川县| 固阳县| 琼结县| 朝阳区| 沽源县| 饶河县| 古蔺县| 新巴尔虎右旗| 蓬安县| 奉节县| 延庆县| 黄山市| 岢岚县| 陆良县| 毕节市| 永济市| 蒲城县| 阳泉市| 会理县| 营口市| 新和县| 福建省| 安康市| 大安市| 牙克石市| 尼木县| 瑞安市| 兴安盟| 锡林浩特市| 灌阳县| 高唐县| 平凉市|