问题如下:
使用JDBC连接oracle时,使用SQL查询,是否能够获得查询结果多余一条记录的结果集?我是oracle菜鸟,以前一直使用MySQL,所以请各位达人不吝赐教

解决方案 »

  1.   

    比如在使用sevlet时,可以使用如下语句:
       ..
      ResultSet rs = stmt.executeQuery("SELECT....")
      String temp="";
      when(rs.next())
     {
      temp=rs.getString(1);
    }
      ..
      

  2.   

    刚刚试过,只能返回最后一条记录
    以下是我的代码
    请各位给看看
    public class TestOracle
    {
    String driver = "oracle.jdbc.driver.OracleDriver";    String strUrl = "jdbc:oracle:thin:@192.168.1.128:1521:foodqs";    OracleStatement stmt = null;    OracleResultSet rs = null;
        
        OracleConnection conn = null;
        
        String sql = "select * from cheng";
     public void test() throws ClassNotFoundException, SQLException
        {
           Class.forName(driver);       conn = (OracleConnection)DriverManager.getConnection(strUrl, "system", "foodqs");
          
          System.out.println(sql);
          
          stmt=(OracleStatement)conn.createStatement();
          for(int j=0;j<10;j++){
          rs=(OracleResultSet)stmt.executeQuery(sql);
    //       
    //       for(int i=0;i<10&&rs.next();i++)
    //       {
           rs.next();
           rs.getString(1);
           rs.getString(2);
           System.out.println("id:"+rs.getString(1));
           System.out.println("name:"+rs.getString(2));//       }
          }
          try {         if(rs != null){           rs.close();           if(stmt!=null){             stmt.close();           }           if(conn!=null){             conn.close();           }         }       }       catch (SQLException ex1) {       }
        }
    }
      

  3.   

    select 結果 from table group by 結果 having count(*) > 1;
      

  4.   

    while (rs.next())
    {
          rs.getString(1); 
          rs.getString(2); 
          System.out.println("id:"+rs.getString(1)); 
          System.out.println("name:"+rs.getString(2)); 
    }
      

  5.   

         
         rs.next(); 
          rs.getString(1); 
          rs.getString(2); 
          System.out.println("id:"+rs.getString(1)); 
          System.out.println("name:"+rs.getString(2)); 
         这段改成:
         
     while (rs.next()) 

          System.out.println("id:"+rs.getString(1)); 
          System.out.println("name:"+rs.getString(2)); 

         
    你再试试
      

  6.   

     public void test() throws ClassNotFoundException, SQLException
        {
           Class.forName(driver);       conn = (OracleConnection)DriverManager.getConnection(strUrl, "system", "foodqs");
          
          System.out.println(sql);
          
          stmt=(OracleStatement)conn.createStatement();
          {
          rs=(OracleResultSet)stmt.executeQuery(sql);
          while(rs.next()){
           
           rs.getString(1);
           rs.getString(2);
           System.out.println("id:"+rs.getString(1));
           System.out.println("name:"+rs.getString(2));       }
          }
          try {         if(rs != null){           rs.close();           if(stmt!=null){             stmt.close();           }           if(conn!=null){             conn.close();           }         }       }       catch (SQLException ex1) {       }
        }
      

  7.   

    你的java代码错了.public void test() throws ClassNotFoundException, SQLException 
        { 
          Class.forName(driver);       conn = (OracleConnection)DriverManager.getConnection(strUrl, "system", "foodqs"); 
          
          System.out.println(sql); 
          
          stmt=(OracleStatement)conn.createStatement(); 
          for(int j=0;j <10;j++){ 
              rs=(OracleResultSet)stmt.executeQuery(sql); 
              rs.next(); 
              rs.getString(1); 
              rs.getString(2); 
              System.out.println("id:"+rs.getString(1)); 
              System.out.println("name:"+rs.getString(2));       } 
          try {         if(rs != null){           rs.close();           if(stmt!=null){             stmt.close();           }           if(conn!=null){             conn.close();           }         }       }       catch (SQLException ex1) {       } 
        } 
    }去掉注释的行,你的代码就是这个样子,
    注意:你每次循环都重新执行了一次查询,然后取第一行.
    所以你只能得到同一行数据.这帖可以转去java区了...
    PS:
    1.把rs=(OracleResultSet)stmt.executeQuery(sql); 移到循环外面
      然后根据rs.next()循环就可以了.
    2.其实在这个层次上,跟mysql没有区别.等你用到的sql复杂了,才涉及不同数据库的区别.
    3.还有,不需要用oracle driver中给的OracleStatement,OracleResultSet,
      直接用jdbc的就可以了,不需要管oracle 是怎么实现jdbc规范的.
      

  8.   

     public void test() throws ClassNotFoundException, SQLException
        {
           Class.forName(driver);       conn = (OracleConnection)DriverManager.getConnection(strUrl, "system", "foodqs");
          
          System.out.println(sql);
          
          stmt=(OracleStatement)conn.createStatement();
         
          rs=(OracleResultSet)stmt.executeQuery(sql);
          for(int i=0;i<10;i++){
           
              rs.next();
              rs.getString(1);
           rs.getString(2);
           System.out.println("id:"+rs.getString(1));
           System.out.println("name:"+rs.getString(2));       
          }
          try {         if(rs != null){           rs.close();           if(stmt!=null){             stmt.close();           }           if(conn!=null){             conn.close();           }         }       }       catch (SQLException ex1) {       }
        }报错:
    elect * from cheng
    id:9
    name:agagagag
    java.sql.SQLException: 用尽的 Resultset
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
    at oracle.jdbc.driver.OracleStatement.prepare_for_new_get(OracleStatement.java:3195)
    at oracle.jdbc.driver.OracleStatement.getStringValue(OracleStatement.java:3444)
    at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:434)
    at db.TestOracle.test(TestOracle.java:43)
    at db.TestOracle.main(TestOracle.java:186)
      

  9.   

    无敌了你,把强转都去掉,请按rs.next()来循环.
    查清楚你数据库中的记录是多少条,
    不要用for(int i=0;i <10;i++),
    当游标指到最后一行的时候,再用rs.next()就会报错的      conn = DriverManager.getConnection(strUrl, "system", "foodqs"); 
          
          System.out.println(sql); 
          
          stmt = conn.createStatement(); 
        
          rs = stmt.executeQuery(sql);       for(rs.next();){ 
         
          System.out.println("id:"+rs.getString(1)); 
          System.out.println("name:"+rs.getString(2));       
          } 
      

  10.   

    for(rs.next())这里要改一下:
    用while(rs.next()),汗...