David.Ko

Follow my heart!
posts - 100, comments - 11, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

数据操作的简单易错问题

Posted on 2007-05-08 15:37 David.Ko 阅读(189) 评论(0)  编辑  收藏 所属分类: MySQL
最近做了一个中小企业网络平台,在操纵结果集时,在abstract() 和 next()  的使用上产生了冲突,以致于总是漏掉最开始的一条数据。因为其中内嵌了分页程序,int pointer = (sp.getShowPage() - 1) * sp.getPageSize() + 1;
abstract(pointer)后指针指向第一条数据(开始时指针指向第一条的前面),然后我用while(rs.next())获取并保存其中的sp.getPageSize() 个数据(实际上我只获取了sp.getPageSize() -1个),因为在调用rs.next()后,指针向下移动了一行,即此时指向第二条数据了。
这种指针的移动在所有数据库中都是一样的。因为JDBC 驱动需要提前获得一行来判断当前行是否是最后一行。
所以我换了一种新结构:
rs.absolute(pointer);
for (int i = 0; i < sp.getPageSize(); i++) {
         //获取并保存信息
    if (!rs.next())     //      next()在这即起到了移动指针,有起到了判断剩余的数据不足sp.getPageSize()的作用,
                                   有点类似于直接插入排序中的变量j
     break;
   }
这样便不会漏掉数据,而且提高了程序执行效率!

只有注册用户登录后才能发表评论。


网站导航: