David.Ko

          Follow my heart!
          posts - 100, comments - 11, trackbacks - 0, articles - 0
             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          數(shù)據(jù)操作的簡單易錯問題

          Posted on 2007-05-08 15:37 David.Ko 閱讀(198) 評論(0)  編輯  收藏 所屬分類: MySQL
          最近做了一個中小企業(yè)網(wǎng)絡(luò)平臺,在操縱結(jié)果集時,在abstract() 和 next()  的使用上產(chǎn)生了沖突,以致于總是漏掉最開始的一條數(shù)據(jù)。因為其中內(nèi)嵌了分頁程序,int pointer = (sp.getShowPage() - 1) * sp.getPageSize() + 1;
          abstract(pointer)后指針指向第一條數(shù)據(jù)(開始時指針指向第一條的前面),然后我用while(rs.next())獲取并保存其中的sp.getPageSize() 個數(shù)據(jù)(實際上我只獲取了sp.getPageSize() -1個),因為在調(diào)用rs.next()后,指針向下移動了一行,即此時指向第二條數(shù)據(jù)了。
          這種指針的移動在所有數(shù)據(jù)庫中都是一樣的。因為JDBC 驅(qū)動需要提前獲得一行來判斷當前行是否是最后一行。
          所以我換了一種新結(jié)構(gòu):
          rs.absolute(pointer);
          for (int i = 0; i < sp.getPageSize(); i++) {
                   //獲取并保存信息
              if (!rs.next())     //      next()在這即起到了移動指針,有起到了判斷剩余的數(shù)據(jù)不足sp.getPageSize()的作用,
                                             有點類似于直接插入排序中的變量j
               break;
             }
          這樣便不會漏掉數(shù)據(jù),而且提高了程序執(zhí)行效率!

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 长沙县| 和平县| 昌江| 通州区| 施秉县| 崇信县| 鹤庆县| 衡阳县| 上蔡县| 兴安盟| 桑植县| 孝昌县| 南召县| 德安县| 长子县| 东阿县| 卢氏县| 新昌县| 榆社县| 汉源县| 余姚市| 平山县| 萨嘎县| 庐江县| 时尚| 濮阳县| 永年县| 桐柏县| 桓仁| 富阳市| 清水县| 巴林左旗| 南澳县| 阿克| 潞城市| 恭城| 东乡县| 涟源市| 莒南县| 全南县| 遂川县|