写程序的时候常用,比如说进行某一查询
当查询出结果是存在的时候,那么显示查询结果
否则提示没有记录.具体程序代码如:
<%@ page import="java.sql.*"%><%
  Connection conn=null;
  try{
  Class.forName("oracle.jdbc.driver.OracleDriver");
  String url="jdbc:oracle:thin:@192.168.56.199:1521:asdb";
  String user="SYSTEM";
  String password="oracle01";
  conn=DriverManager.getConnection(url, user, password);}
  catch(Exception se1)
  {se1.printStackTrace();}
String query="select * from oralce";
%>PreparedStatement ps=conn.prepareStatement(query);
ResultSet rs=ps.executeQuery();while(rs.next())
{do something to display....}
在这些代码里,我们如果在while(rs.next())之前用if(rs.next())...
那么rs就往下遍历了一条记录,则我们必须退回没有判断前的记录.
但是我用rs.previous() ;又不可以!这种问题如何处理难道非要多一次查询,如:
select count(*) from oralce?
关于ResultSet 查询出来的记录数,有没有函数或常量来表示其总共查询出了多少条记录?感谢高手指教

解决方案 »

  1.   

    是不是可以用ResultSetMetaData啊?ResultSetMetaData rsmd = rs.getMetaData();
    然后用ResultSetMetaData的方法判断呢。呵呵。
      

  2.   

    ResultSetMetaData是数据结果集对吧,好,我顶~~!
      

  3.   

    rs.last();
    int a=rs.getRow();//这里的a就是记录的总数,在这样的程序中,你最好将游标设置为
    动态的,因为rs.last(),已经将游标走到了最后,如果之后还要进行
    其他的操作,就需要把游标再走到前边。
      

  4.   

    楼上正解,ResultSet没有提供直接统计记录总数的方法
      

  5.   

    如果这样移动游标不如再进行一次sql查询好呢?
      

  6.   

    再进行一次sql效率不高,还是到游标最后计数好些。
      

  7.   

    rs.previous();可以用的
    PreparedStatement ps=conn.prepareStatement(query);改成
    PreparedStatement ps=conn.prepareStatement(query,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);试试