倒,!!
你可以自己在程序里面设定一个计数变量啊。
如:
int CurrentCount = 0;
int MaxSize = 20;
..
...while (set.next() )
{
if ( CurrentCount >= MaxSize )
break; //跳出循环,不再取数据
....
CurrentCount++;
}
你可以自己在程序里面设定一个计数变量啊。
如:
int CurrentCount = 0;
int MaxSize = 20;
..
...while (set.next() )
{
if ( CurrentCount >= MaxSize )
break; //跳出循环,不再取数据
....
CurrentCount++;
}
控制读取多少条的话也不用采取变量控制的方法。因为在oracle中有一个控制读取多少条的方法(但仅适用于oracle、其他数据库是不相同的)
select * from table where rownum <100
这句sql就表示只读表中的前100条数据。
其中涉及到从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:我怎么得到一个表的记录数目有多少呢,谢谢!
可以用count()函数
select count(id) total from table;
执行这样的 SQL语句total的值就是记录数 。