2010-06-02 72 views
0

我希望能够检查,看看我的结果集是否有结果。藤本,我会执行:检查结果集是否为空,如果没有,然后得到int

if(rs.next()){ 
    boolean = true; 
} 

但是我要检查,看看它的值是在数据库中,如果这样检索:

while(rs.next()) 
    id = rs.getInt("id); 

我会如何结合这两种?如果结果集为空,我想要返回-2。
由于事先
院长

回答

5
id = rs.next() ? rs.getInt("id") : -2; 

这样呢?

+0

你能解释一下,因为我从未见过这样的东西吗? – Dean 2010-06-02 17:01:26

+0

@Dean:这是一个带三元运算符'?:'的三元表达式。它基本上与'int id; if(rs.next())id = rs.getInt(“id”); else id = -2;'。另请参阅http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op2.html – BalusC 2010-06-02 17:06:24

2

只需使用一个if-else

if (resultSet.next()) { 
    return resultSet.getInt("id"); 
} else { 
    return -2; 
} 

另见this answer更多的提示如何处理存在,零/一,零/更多的结果。

+0

除非您真的应该关闭结果集,这几乎要求您在任何一种情况下保存结果,然后关闭结果集,然后返回。 – Jay 2010-06-02 17:17:42

+1

@Jay:我不知道你如何关闭你的资源,但我通常在'finally'关闭它们,它会正常工作。 – BalusC 2010-06-02 17:19:37

+0

好的,我会买的。就我个人而言,我通常会在finally块中关闭连接,但在主线代码中关闭ResultSets和Statements,因为我懒得在try块之外声明它们,然后将它们填充到里面。 – Jay 2010-06-03 17:22:19