2016-12-11 50 views
-1
public void loadstuff(){ 
    String query = "select eventname , eventtext from tblEvent where datecreate = ?"; 

    try { 
     PreparedStatement pst = db.conn.prepareStatement(query); 
     pst.setString(1, sdf.format(calendar.getDate())); 
     db.rs = pst.executeQuery(); 

     while (db.rs.next()){ 
      lblEventname.setText(db.rs.getString("eventname")); 
      lbleventonclick.setText(db.rs.getString("eventtext")); 
     } 




    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

enter image description herejava日曆我該如何返回null?

所以我能夠成功獲取事件名稱和eventtext,通過點擊jcalendar日期,然後按「getevent」按鈕。

但我如何編碼,如果我點擊沒有事件的日期,它會在標籤上顯示「無事件」。而不是在我點擊按鈕後不顯示任何東西。

我把它什麼樣的,如果做其他的

+0

如果發生多個事件,您預期會發生什麼?現在,最後一個贏,無論哪個最後一個給出,你沒有一個'ORDER BY'子句。如果你的答案是隻能有一個,那麼將'while'循環改爲'if-else'語句。 – Andreas

+0

*無關:*爲什麼要將'PreparedStatement'存儲在局部變量中,而將'ResultSet'存儲在'db'對象的某個字段中? ResultSet'也應該存儲在一個局部變量中。你還應該記得關閉ResultSet和PreparedStatement,最好使用[try-with-resources](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)聲明。 – Andreas

回答

0

使用next()一次來測試行的存在:

db.rs = pst.executeQuery(); 
if (db.rs.next()) { 
    lblEventname.setText(db.rs.getString("eventname")); 
    lbleventonclick.setText(db.rs.getString("eventtext")); 
} else { 
    // no rows were returned 
    lblEventname.setText("No events"); 
} 

當然,這只是輸出1個最多,但是這無論如何,唯一有意義的事情是。