如果结果集不可滚动,则绝对功能不起作用

时间:2017-03-26 07:54:01

标签: java jdbc resultset

您好我是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()方法中给出任何参数,即默认,它应该是**不可滚动的**因此上面的代码不应该获取结果,但是工作得很好怎么样?

1 个答案:

答案 0 :(得分:2)

JDBC specification说:

  

默认ResultSet类型为TYPE_FORWARD_ONLY

     

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

     

如果驱动程序不支持提供给方法createStatement的类型,   prepareStatementprepareCall,它会在SQLWarning上生成Connection   正在创建语句的ResultSet对象。执行语句时   驱动程序返回一个ResultSet对象,该对象的类型最接近   要求的类型。应用程序可以通过找出ResultSet.getType对象的类型   调用方法TYPE FORWARD_ONLY

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

  • 检查您是否收到ResultSet

  • 检查您的"id"类型。