2016-12-11 8 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 calendarどのようにnullを返すのですか?

ので、私は成功しjcalendar日と押して「GETEVENT」ボタンをクリックすることで、eventnameにとeventtextを取得できています。

しかし、イベントがない日付をクリックすると、ラベルに「イベントがありません」というメッセージが表示されます。ボタンをクリックしても何も表示されません。私はそれに入れてやる他にあれば、どのような

+0

複数のイベントがある場合、何が起こりたいと思いますか?今すぐ、最後のものが勝ちます。最後のものは、あなたが 'ORDER BY'節を持っていないものです。答えが1つしかない場合は、 'while'ループを' if-else'文に変更してください。 – Andreas

+0

*無関係:なぜ 'PreparedStatement'をローカル変数に格納しますか?' ResultSet'を 'db'オブジェクトのフィールドに格納するのはなぜですか? 'ResultSet'は、ローカル変数にも格納する必要があります。また、[try-with-resources](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)を使用して、 'ResultSet'と' PreparedStatement'の両方を閉じることを忘れないでください。ステートメント。 – 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行最大、それはですとにかく意味があるのは唯一のことだ。

関連する問題