如果结果集不可滚动,则绝对函数应该不起作用



嗨,我是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 行,我将指针移回第 4 行

正如你所看到的,我没有在createStatement((方法中给出任何参数,即默认情况下它应该是**不可滚动**的,因此上面的代码不应该获取结果,但它工作正常,怎么会这样?

JDBC 规范说:

默认ResultSet类型为 TYPE_FORWARD_ONLY

该方法DatabaseMetaData.supportsResultSetType返回true如果 驱动程序支持指定的类型,否则false

如果驱动程序不支持提供给方法的类型 createStatementprepareStatementprepareCall,它会SQLWarningConnection创建语句的对象。执行语句时, 驱动程序ResultSet返回与 请求的类型。应用程序可以通过以下方式找出ResultSet对象的类型 调用该方法ResultSet.getType

  • 检查 JDBC 驱动程序是否支持 TYPE FORWARD_ONLY

  • 检查您是否得到SQLWarning

  • 检查您得到的ResultSet类型。

相关内容

  • 没有找到相关文章

最新更新