嗨,我是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
。如果驱动程序不支持提供给方法的类型
createStatement
,prepareStatement
或prepareCall
,它会SQLWarning
在Connection
创建语句的对象。执行语句时, 驱动程序ResultSet
返回与 请求的类型。应用程序可以通过以下方式找出ResultSet
对象的类型 调用该方法ResultSet.getType
。
-
检查 JDBC 驱动程序是否支持
TYPE FORWARD_ONLY
。 -
检查您是否得到
SQLWarning
。 -
检查您得到的
ResultSet
类型。