MySQL的JDBC判斷查詢結果是否為空白以及擷取查詢結果行數的方法

來源:互聯網
上載者:User

標籤:

判斷查詢結果是否為空白在JDBC中沒有方法hasNext去判斷是否有下一條資料,但是我們可以使用next方法來代替。看next方法的官方解釋:    
  • boolean next()      throws 
    Moves the cursor forward one row from its current position. A ResultSet cursor is initially positioned before the first row; the first call to the method next makes the first row the current row; the second call makes the second row the current row, and so on.

    When a call to the next method returns false, the cursor is positioned after the last row. Any invocation of a ResultSet method which requires a current row will result in a SQLException being thrown. If the result set type is TYPE_FORWARD_ONLY, it is vendor specified whether their JDBC driver implementation will return false or throw an SQLException on a subsequent call to next.

    If an input stream is open for the current row, a call to the method next will implicitly close it. A ResultSet object‘s warning chain is cleared when a new row is read.

    Returns:
    true if the new current row is valid;  false if there are no more rows
    Throws:
    SQLException - if a database access error occurs or this method is called on a closed result set

翻譯如下:    boolean next() throws SQLException        將當前行從上一行移到下一行。一個 ResultSet的當前行最初指向第一行查詢結果前。當第一次調用next的時候,當前行將會指向第一行查詢結果。第二次調用就會指向第二行查詢結果,等等。    當調用next方法返回false的時候,當前行當前行指向最後一行查詢結果之後。這時候,任何 ResultSet 的請求當前行的方法調用都會導致 SQLException 被拋出。但如果查詢的結果設定為TYPE_FORWARD_ONLY,next方法在這時候根據實現廠商的不同,可能會返回false也坑能會拋出 SQLException 異常 的警告將會被清楚。
關於的next的開始和結束,可以用下面的圖來解釋:    0->1->2->3->4->0                中間的1, 2, 3, 4是查詢結果    ^                           ^開始                          結束
判斷JDBC查詢結果是否為空白的正確姿勢:
Statement statement = conn.createStatement();ResultSet res = statement.executeQuery(selectSql);if (!res.next()) {    //res is null} else {    // res is not null}
擷取查詢結果的行數JDBC並沒有直接提供擷取查詢結果總行數的方法給我們調用,為此我們需要使用間接的手段來執行:
第一種方法:
ResultSet res = ...使用某種方法擷取查詢結果int nRow = 0;while(res.next()) {    ++nRow;}res.beforeFirst();// 其他代碼不變

第二種方法:
ResultSet res = ...使用某種方法擷取查詢結果res.last();final int nRow = res.getRow();res.beforeFirst();// 其他代碼不變

MySQL的JDBC判斷查詢結果是否為空白以及擷取查詢結果行數的方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.