我目前正在嘗試appointments通過查詢User_ID. 我正在使用的查詢:
SELECT * FROM appointments WHERE User_ID = ? and Start BETWEEN NOW() AND ADDDATE(NOW(), INTERVAL 15 MINUTE);
我如何實作,如果它回傳任何約會,它將是true,如果它回傳 0 行,它將是false?
我目前已經寫了
public static boolean checkUpcomingAppointments(int userID) {
try {
String sqlCheck = "SELECT * FROM appointments WHERE User_ID = ? and Start BETWEEN NOW() AND ADDDATE(NOW(), INTERVAL 15 MINUTE);";
PreparedStatement ps = JDBC.getConnection().prepareStatement(sqlCheck);
ps.setInt(1, userID);
ps.execute();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return true;
}
uj5u.com熱心網友回復:
將“select ”更改為“select count( )”并使用
Prepared statement.executeQuery()而不是
Prepared statement execute()
然后回傳值將是一個 ResultSet,您可以從中獲取計數。
String sqlCheck = "SELECT count(*) FROM appointments WHERE User_ID = ? and Start BETWEEN NOW() AND ADDDATE(NOW(), INTERVAL 15 MINUTE);";
PreparedStatement ps = JDBC.getConnection().prepareStatement(sqlCheck);
ps.setInt(1, userID);
ResultSet rs = ps.executeQuery();
rs.next();
return rs.getInt(1) > 0;
uj5u.com熱心網友回復:
在Java Doc 中,你有這個:
boolean execute() throws SQLException執行這個 PreparedStatement 物件中的 SQL 陳述句,可以是任何型別的 SQL 陳述句。一些準備好的陳述句回傳多個結果;execute 方法處理這些復雜的陳述句以及由方法 executeQuery 和 executeUpdate 處理的更簡單的陳述句形式。execute 方法回傳一個布林值來指示第一個結果的形式。您必須呼叫方法 getResultSet 或 getUpdateCount 來檢索結果;您必須呼叫 getMoreResults 才能移動到任何后續結果。
Returns:如果第一個結果是 ResultSet 物件,則為 true;如果第一個結果是更新計數或沒有結果,則為 false
在這里,您的方法可能如下所示:
public static boolean checkUpcomingAppointments(int userID) {
boolean isResultPresent = false;
try {
String sqlCheck = "SELECT * FROM appointments WHERE User_ID = ? and Start BETWEEN NOW() AND ADDDATE(NOW(), INTERVAL 15 MINUTE);";
PreparedStatement ps = JDBC.getConnection().prepareStatement(sqlCheck);
ps.setInt(1, userID);
isResultPresent = ps.execute();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return isResultPresent;
}
您還可以使用 aSELECT COUNT(*)并呼叫executeQuery()。本教程可以幫助您。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344744.html
下一篇:具有最大日期的雙重分組
