簡體   English   中英

如何為檢索 0 行的 SQL 查詢格式化方法? (爪哇)

[英]How do I format a method for a SQL query that retrieves 0 rows? (Java)

我目前正在嘗試通過查詢數據庫中的 User_ID 來檢索在接下來的 15 分鍾內發生的約會列表。 我正在使用的查詢是

"SELECT * FROM appointments WHERE User_ID = ? and Start BETWEEN NOW() AND ADDDATE(NOW(), INTERVAL 15 MINUTE);"

我如何格式化,如果它返回任何約會,它將為真,如果它返回 0 行,它將為假?

我目前已經寫了

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;
    }
    

任何幫助都會很棒。 我想調用“checkUpcomingAppointments”方法,如果它返回 0 行以外的任何內容,它將為 0 返回 true 和 false。希望我的措辭正確。

將“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;

Java Doc 中,你有這個:

boolean execute() throws SQLException執行這個 PreparedStatement 對象中的 SQL 語句,可以是任何類型的 SQL 語句。 一些准備好的語句返回多個結果; execute 方法處理這些復雜的語句以及由方法 executeQuery 和 executeUpdate 處理的更簡單的語句形式。 execute 方法返回一個布爾值來指示第一個結果的形式。 您必須調用方法 getResultSet 或 getUpdateCount 來檢索結果; 您必須調用 getMoreResults 才能移動到任何后續結果。

Returns:如果第一個結果是 ResultSet 對象,則Returns: 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;
}

您還可以使用SELECT COUNT(*)並調用executeQuery() 教程可以幫助您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM