ResultSet :
一个ResultSet对象对应着一个由查询语句返回的一个表。对ResultSet对象的处理必须逐行进行,而对每一行中的各个列,可以按任何顺序进行处理。
ResultSet对象维持一个指向当前行的指针。最初,这个指针指向第一行之前。Result类的next()方法使这个指针向下移动一行。next()方法的返回值是一个boolean型的值,该值若为true, 说明结果集中还存在下一条记录,并且指针已经成功指向该记录,可以对其进行处理;若返回值是false,则说明没有下一行记录,结果集已经处理完毕。
在对每一行进行处理时,可以对各个列按任意顺序进行处理。ResultSet类的getXXX()方法可以从某一列中获得检索结果。
Limit :
limit的三种用法
SELECT * FROM testtable LIMIT 2,1;
SELECT * FROM testtable LIMIT 2 OFFSET 1;
SELECT * FROM testtable LIMIT 3;
网上解释为
LIMIT X,Y 中X表示跳过X个数据,读取Y个数据
当LIMIT和OFFSET组合使用的时候,LIMIT后面只能有一个参数,表示要取的的数量,OFFSET表示要跳过的数量 。
Limit后追加的参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的数目。如果给定一个参数,则这个参数只指定返回记录行的数目。初始记录行的偏移量是 0(而不是 1)。
!!!!!!个人理解
既然ResultSet和Limit同为处理数据库中的表,那么这两张表的结构应该是相同的。
但现在能找到的信息是ResultSet是从第一行数据之前(.next()使指针指向下一行)处理表,Limit是从第一行开始处理表(offset为偏移量,表示跳过的数量)。可见处理方式出现差别。
让我们找到词典对offset的英文解释(英文解释对单词的解释最贴切),从上图可以看出,标红位置为:第一件事----被减少----第二件事----优点和缺点被抵消。所以由此可见,offset的基本意为抵消。
那么我这样认为,ResultSet和Limit处理表均从0行开始。ResultSet通过调用.next()来跳过第0行数据,从而指向第一行数据。Limit通过将offset默认值设为0来抵消第0行,从而可以直接处理第一行数据。(第0行数据为列名所在行)