UCanAccess - getMetaData()上的错误

时间:2016-08-24 15:07:57

标签: java ms-access jdbc ucanaccess

我正在使用UCanAccess查询Access数据库(显然......),由于某些原因,我无法引用getMetaData(),尽管其他一切都有效。

例如,此代码将ResultSet转换为JSON:

public static JSONArray convertToJSON(ResultSet resultSet) throws Exception {
    JSONArray jsonArray = new JSONArray();
    while (resultSet.next()) {
        System.out.println("Outputting record");

        //int columnCount = 20;
        int columnCount = resultSet.getMetaData().getColumnCount();
        for (int i = 0; i < columnCount; i++) {
            JSONObject obj = new JSONObject();

            obj.put(String.valueOf(i), resultSet.getObject(i + 1));
            jsonArray.put(obj);
        }
    }
    return jsonArray;
}

运行此命令时会返回以下错误:

Outputting record
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 statement is closed
    at net.ucanaccess.jdbc.UcanaccessResultSet.getMetaData(UcanaccessResultSet.java:480)
    at passport.AccessQueryServlet.convertToJSON(AccessQueryServlet.java:76)

    at passport.AccessQueryServlet.doGet(AccessQueryServlet.java:44)

但是如果使用已注释掉的int columnCount = 20;,那么它确实有效(尽管我无法检索没有getMetaData的列名!)。

为什么这句话显然是closed的任何想法虽然我仍然可以从中读取数据?

0 个答案:

没有答案