1. 如何获取返回ResultSet结果集的行数:
(1).括号内部没有参数,则可以用以下方法
st=conn.createStatement();
int rowcount = 0;
ResultSet resultSet = st.executeQuery(sql);
while(resultSet.next()){
rowcount++;
}
此时返回的rowcount就是对应的结果集的总的行数。但是此时的resultSet.next()已经执行到最后一行,无法滚动执行。
(2).在括号内部添加参数
st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
注:第一个参数:
ResultSet.TYPE_FORWARD_ONLY:不滚动结果集;
ResultSet.TYPE_SCROLL_INSENSITIVE:滚动结果集,但结果集数据不会再跟随
数据库
而变化;
ResultSet.TYPE_SCROLL_SENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;
第二个参数:
CONCUR_READ_ONLY
:结果集是只读的,不能通过修改结果集而反向影响数据库;
CONCUR_UPDATABLE:结果集是可更新的,对结果集的更新可以反向影响数据库。
则可以继续执行:
int rowcount =0;
ResultSet resultSet = st.executeQuery(sql);
resultSet.last(); //直接执行跳到结果集的最后一行
rowcount = resultSet.getRow(); //这一句就能得到结果集的行数
resultSet.beforeFirst(); //重新执行到第一行的前一行,以便查询结果集的集体内容