Java HSQLDB连接问题

时间:2016-02-01 17:33:42

标签: java hsqldb

我一直在制作一个使用HSQL连接到我创建的数据库的程序。由于某种原因,我的类中的某些方法可以调用数据库并执行命令,而其他部分则不能。我一直收到这个错误,

java.sql.SQLFeatureNotSupportedException:功能不受支持

这是方法,

public List<CustomerInfo> DBgetInfo(String Customer)
        throws ClassNotFoundException, SQLException {

    Class.forName("org.hsqldb.jdbcDriver");
    Connection con = DriverManager.getConnection(urlConnection, userId,
            password);
    Statement stmt= con.createStatement();



    String query = "SELECT * FROM PUBLIC.CUSTOMER";
    ResultSet rs = stmt.executeQuery(query);


    rs.first(); //The error happens on this line


    rs.close();
    stmt.close();
    con.close();

}

我已多次运行调试器,并且在rs.first行上有此错误。我尝试重新编译数据库,重新导入所有文件,检查以确保命令是正确的,等等......奇怪的是,在本课程的早期我有一个非常类似的方法,但它没有问题。我真的无法弄清问题是什么。

1 个答案:

答案 0 :(得分:1)

根据documentation发生此错误:

  

抛出:   SQLException - 如果发生数据库访问错误,则在关闭的结果集上调用此方法,或者结果集类型为TYPE_FORWARD_ONLY   SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法

在同一页面的前面,有一节关于结果集的HSQL特定细节。要调用first,您需要修改语句创建:

  

HSQLDB生成的ResultSet对象默认为ResultSet.TYPE_FORWARD_ONLY(标准JDBC行为),不允许使用绝对和相对定位方法。如果使用以下命令创建语句:

     

Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

     

然后使用JDBC2的所有绝对和相对定位方法生成支持的ResultSet对象来设置当前行的位置......

但您可能想要考虑为什么需要致电first