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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 延川县| 麻江县| 姚安县| 拉萨市| 乐亭县| 科尔| 大兴区| 东乡族自治县| 灵石县| 拉萨市| 江安县| 平潭县| SHOW| 丹寨县| 明溪县| 抚顺市| 桑日县| 邵武市| 临泽县| 新乡市| 祁连县| 福州市| 威信县| 卓资县| 全南县| 沅陵县| 安康市| 伊宁县| 福建省| 花垣县| 弥渡县| 华宁县| 龙州县| 湘潭市| 新密市| 伊金霍洛旗| 民权县| 呼玛县| 陈巴尔虎旗| 鲜城| 安乡县|