我正在使用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;
}
每当我运行我的程序并尝试预订新班次时,无论是否发生冲突,它总会返回它。
答案 0 :(得分:2)
您需要检查结果集是否包含任何行,而不是检查它是否为空。
if (results.next())
{
return true;
}
else {
return false;
}
或者,当然,只是
return results.next();
答案 1 :(得分:0)
正如评论所说,检查results
是否为空通常是不正确的。我没有SQL经验告诉你runQuery()
将在失败的查询中返回什么,但我怀疑它是null,我希望它返回一个空的ResultSet
。
首先检查它是否为空并不是坏事,事实上最好避免NullPointerException
抛出。但是,仅仅使用该检查是不够的。