布尔方法每次都返回true

时间:2017-02-24 16:13:15

标签: java sql sqlite

我正在使用SQL来比较事件的日期

public static boolean sameDate(String DateString)
{

   PreparedStatement statement = Application.database.newStatement("SELECT * FROM BookShift WHERE id = ?  IN (SELECT id FROM Class WHERE Date  = ?)"); 

    try 
    {
       if(statement !=null)
       {
           statement.setInt(1, main.id);
           statement.setString(2, DateTwo);

           ResultSet results = Application.database.runQuery(statement);

           if (results != null)
           {
               return true;
           }
           else {
            return false;
            }
        }
    }
    catch (SQLException resultsexception)
   {
        System.out.println("Database result processing error: " + resultsexception.getMessage());
    }
    return false;
   }

每当我运行我的程序并尝试预订新班次时,无论是否发生冲突,它总会返回它。

2 个答案:

答案 0 :(得分:2)

您需要检查结果集是否包含任何行,而不是检查它是否为空。

 if (results.next())
 {
     return true;
 }
 else {
     return false;
 }

或者,当然,只是

return results.next();

答案 1 :(得分:0)

正如评论所说,检查results是否为空通常是不正确的。我没有SQL经验告诉你runQuery()将在失败的查询中返回什么,但我怀疑它是null,我希望它返回一个空的ResultSet

首先检查它是否为空并不是坏事,事实上最好避免NullPointerException抛出。但是,仅仅使用该检查是不够的。