簡體   English   中英

如果結果集不可滾動,則絕對功能不起作用

[英]If resultset is not scrollable then absolute function should not work

嗨,我是JDBC概念的新手,據我所知,要將結果集指針雙向移動,需要將結果集設置為可滾動

但是由於結果集未設置為可滾動的絕對函數,因此不允許指針向后移動

但是下面的代碼工作正常

Statement stmt=con.createStatement();  
    ResultSet rs=stmt.executeQuery("select * from studentinfo");  
    int counter=0;
    while(rs.next()) 
    {
        System.out.println(rs.getInt(1)+"  "+rs.getString(2));
        int row = rs.getRow();
        if(row==5)
        {
            if(counter==0)
            {
                counter++;
                rs.absolute(4);
                System.out.println(rs.getInt(1)+"  "+rs.getString(2));
            }
        }
    }
    con.close();

在此代碼中,如果當前行等於5,則將指針移回第四行

如您所見,我在createStatement()方法中未提供任何參數,即默認情況下它應為**不可滾動**,因此上述代碼不應獲取結果,但是如何正常運行呢?

JDBC規范說:

默認的ResultSet類型是TYPE_FORWARD_ONLY

如果驅動程序支持指定的類型,則方法DatabaseMetaData.supportsResultSetType返回true否則返回false

如果驅動程序不支持提供給方法createStatementprepareStatementprepareCall ,它將在創建該語句的Connection對象上生成一個SQLWarning 執行該語句時,驅動程序將返回類型最接近所請求類型的ResultSet對象。 應用程序可以通過調用ResultSet.getType方法找出ResultSet對象的類型。

  • 檢查JDBC驅動程序是否支持TYPE FORWARD_ONLY

  • 檢查您是否獲得SQLWarning

  • 檢查您得到的ResultSet類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM