倒,!!
你可以自己在程序里面设定一个计数变量啊。
如:
int CurrentCount = 0;
int MaxSize = 20;
..
...while (set.next() )
{
   if ( CurrentCount >= MaxSize )
      break;  //跳出循环,不再取数据
   ....
   CurrentCount++;
}

解决方案 »

  1.   

    再送你一点,如果你的处理机制是先读取,再发送,等全部发送完成后更新数据库,然后再读取的话,可以不采用我上面提到的字段标识。
    控制读取多少条的话也不用采取变量控制的方法。因为在oracle中有一个控制读取多少条的方法(但仅适用于oracle、其他数据库是不相同的)
    select * from table where rownum <100
    这句sql就表示只读表中的前100条数据。
      

  2.   

    你觉得这样怎么样的,我想了想的, cloudysunny(蓝天下的雨云)大虾!我做的系统是和移动,连通短信网关通信的程序。
    其中涉及到从oracle数据库中的一张表a取出记录,发送,
    如果发送成功,把这条记录从a表中删除,记录到表b中去。
    如果失败,则还保留在表a 中等待下次再发送。我的想法是开两个线程同时扫描这个表,根据mediaid的不同,每个线程取属于自己的记录。
    取数据记录的时候,我的想法是最好一次不能取出太多,假如取1000条的话,
    第一次取的时候把参数2和3设置为1,1000,
    发送的时候,我记录成功的次数,比如为temp
    那我下一次取的时候,把参数2,3设置为,1000-temp, 2000-temp 就应该可以取出下1000条了吧。这样循环取下去,我想9可以把这个表便利一次了的。
    select results.* from   
    ( select t2.*, rownum rownumber from   
    ( select a.* from a where mediaid = ?1 order by status) t2) results   
    where results.rownumber between ?2 and ?3   这样做效率如何的,能不能实现的。因为这个系统的数据量是突法性的,很可能平时数据很少,某个时间数据量特别大的。
    ps:我怎么得到一个表的记录数目有多少呢,谢谢!
      

  3.   

    怎么得到一个表的记录数目有多少呢
    可以用count()函数
    select count(id) total from table;
    执行这样的 SQL语句total的值就是记录数 。