2014-07-25 84 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所示。

相關問題