为什么我的其他{}不起作用?没有输出。我的if {}工作得非常好。帮助赞赏!
String s2 = "SELECT CCA FROM generatedchoices WHERE category='" + category + "' AND intensiveness='"+ intensiveness + "'";
rs2 = st.executeQuery(s2);
if(rs2!=null){
while (rs2.next()) {
ccalist.add(rs2.getString("CCA"));
}
}
else{
System.out.println("No combination!");
//JOptionPane.showMessageDialog(null, "No combination found!");
}
答案 0 :(得分:1)
你在做什么
rs2 = st.executeQuery(s2);
所以rs2
永远不会为空。
也许你想要什么ti if (rs2.isBeforeFirst()) {...} else {...}
请参阅http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#isBeforeFirst()
答案 1 :(得分:0)
来自the docs for Statement#executeQuery
(强调我的):
返回:一个ResultSet对象,它包含给定查询生成的数据; 永不归零
如果查询没有返回任何行,则不会获得null
。你会得到一个空的ResultSet
。检查此问题的一个简单方法是使用isBeforeFirst()
给定in this answer,而不是检查null
:
if (resultSet.isBeforeFirst() ) {
// loop over results
} else {
// no results returned
}
如果您对该解决方案感到不舒服,或者由于某种原因它会给您带来麻烦,另一种直接的方法是简单地检查您是否处理了结果,例如:
rs2 = st.executeQuery(s2);
boolean hadResults = false;
while (rs2.next()) {
ccalist.add(rs2.getString("CCA"));
hadResults = true;
}
if (!hadResults) {
System.out.println("No combination!");
//JOptionPane.showMessageDialog(null, "No combination found!");
}
或任何其他各种方式,你可以想出去皮肤特定的猫。