SQLite:executeQuery()返回一个空结果集

时间:2016-01-11 16:02:56

标签: java jdbc sqlite

以下Java代码返回一个空结果集,但SQL显示表中有数据:

@Override
public List<Category> list() {
    List<Category> list = new ArrayList<>();

    if (!connection.isPresent()) {
        return list;
    }

    Connection con = connection.get();

    try {
        Statement stmnt = con.createStatement();
        ResultSet rs = stmnt.executeQuery(LIST_SQL);

        while (rs.next()) {
            System.out.println("Got a record"); // DEBUG
            int id = rs.getInt(1);
            String description = rs.getString(2);
            list.add(new Category(id, description)); 
        }
    } catch (SQLException e) {
        LOG.error("Error retrieving Category list", e);
        return list;
    }

    return list;
}

LIST_SQL是:

SELECT id, description FROM category

如果我将此查询复制到sqlite3并执行它,则返回几行。 connection适用于其他查询(但它们是准备好的语句,而不是executeQuery)。没有错误。从未打印过“有记录”。

关于可能出现什么问题的任何想法?

2 个答案:

答案 0 :(得分:1)

看起来你不记得包括&#34 ;;&#34;在LIST_SQL字符串中。需要使用分号来结束查询语句。

答案 1 :(得分:1)

对不起伙计们。我的list()方法永远不会被执行!为什么是另一个问题。感谢您的所有回复。