2014-07-25 119 views
0

我想获取从包含上百万的记录,而无需使用限制有没有办法取n个记录开始表单x行?

表50点的记录我当时以下

private void createMYSQLConnection() throws SQLException { 
     CachedRowSet crs = new CachedRowSetImpl(); 
     Connection conn = null; 
     Statement stmt = null; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      conn = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/mydb", 
        "root", "root"); 

      conn.setAutoCommit(false); 
      crs.setPageSize(100); 
      crs.setUsername("root"); 
      crs.setPassword("Glass4#21"); 
      crs.setCommand("SELECT * FROM trn_22_gouk_final_attendance"); 
      crs.absolute(10); 
      crs.setFetchSize(10); 
      crs.execute(conn); 
      while (crs.next()) { 
       System.out.println(crs.getObject(1)); 
      } 

     } catch (SQLException se) { 
      se.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      crs.close(); 
     } 
    } 

,但它不工作... 任何建议

谢谢提前

+0

我觉得你需要添加行号子句,而不是取数 –

+0

这可能会有所帮助:http://java.avdiel.com/Tutorials/JDBCPaging.html – Seb

+0

我不想写代码是数据库特定的 根据:java.avdiel.com/Tutorials/JDBCPaging.html 对于MySQL我必须使用'极限'为甲骨文我必须使用'rowNum' 但我想代码独立于数据库 –

回答

1

JDBC的'读取大小'不是为了限制结果集,请参见this question

JDBC没有用于分页的API,请参阅this question中的答案。

由于每个数据库类型的分页关键字不同,因此需要为所用的数据库翻译指定的分页。休眠可以做到这一点,如here所示。

相关问题