【发布时间】:2020-05-22 15:22:12
【问题描述】:
我正在尝试在我的程序中运行一个简单的选择语句。插入和创建工作得很好。但我的选择查询没有得到任何结果。 如果我直接在 sqlite 控制台中运行该语句,我会得到结果,所以我认为我准备好的语句中一定有错误。
我在另一个 Java 类中有我的查询,并作为静态变量直接访问它们(这些也适用于创建和插入)
这里有什么:
Queries.java
[...]
public static final String SELECT_TOPIC_BY_NAME_AND_DESCRIPTION =
"SELECT * FROM topics WHERE name=? AND description=?";
[...]
Connector.java
[...]
for (Topic topic : scan.getTopicList()) {
PreparedStatement topicStatement = connection.prepareStatement(Queries.SELECT_TOPIC_BY_NAME_AND_DESCRIPTION);
topicStatement.setString(1, topic.getName());
topicStatement.setString(2, topic.getDescription());
ResultSet topic_resultSet = topicStatement.executeQuery();
if (topic_resultSet.getFetchSize() == 1) {
[...]
}
else{
System.out.println("Couldn't Find Topic: {name: "+topic.getName()+"; description: "+topic.getDescription()+"}");
}
}
[...]
主题与我之前插入的主题相同,因此名称和描述无法更改。如果我运行它,它会给我以下输出:
找不到主题:{name: Money;描述:Alles 是 mit Money zu 帽子}
找不到主题:{name: Banking;描述:Alles 是 mit 银行 zu tun hat}
找不到主题:{name: Money;描述:Alles 是 mit Money zu 帽子}
找不到主题:{name: Banking;描述:Alles 是 mit 银行 zu tun hat}
但是如果在 sqlite 中运行我想要的 select 语句,它会给我正确的结果:
main> SELECT * FROM topics WHERE name='Money' AND description='Alles was mit Money zu tun hat'
1,Money,Alles was mit Money zu tun hat
3,Money,Alles was mit Money zu tun hat
感谢您的帮助
【问题讨论】:
-
查看关于fetch size not returning record count的答案。您需要反复拨打
topic_resultSet.next()。
标签: java sqlite jdbc prepared-statement where-clause