以下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
)。没有错误。从未打印过“有记录”。
关于可能出现什么问题的任何想法?
答案 0 :(得分:1)
看起来你不记得包括&#34 ;;&#34;在LIST_SQL字符串中。需要使用分号来结束查询语句。
答案 1 :(得分:1)
对不起伙计们。我的list()
方法永远不会被执行!为什么是另一个问题。感谢您的所有回复。