-2
    public void getEvent(String tableClick) {

    Events e = new Events();
    try {
        pst = conn.prepareStatement("SELECT * FROM Event WHERE eventID='"+tableClick+"' ");
        rs = pst.executeQuery();
        while(rs.next()){      
        e.setEventName(rs.getString(2));
        System.out.println(rs.getString(2));
        e.setEventDate(rs.getDate(3));
        e.setEventTime(rs.getString(4));
        e.setEventVenue(rs.getString(5));
        e.setEventDetail(rs.getString(6));
        e.setEventOpportunity(rs.getString(7));
        e.setEventMoreDetails(rs.getString(8));
        e.setEndTime(rs.getString(9));
        rs.close();
        pst.close();
       }
    } 
    catch(SQLException ex){
    ex.printStackTrace();
    } 
} //end getEvent

データベースから値を出力している間、System.out.println(rs.getString(2)この情報を Bean に取り込むことができません。

ミューテーターをJavaBean使用して を設定していますが、MVC フレームワークの View クラスでアクセサーを使用しようとすると、 が表示されますnull

これがVIEWクラスからの呼び出しです

VIEW クラスのメソッド

     public void changeDisplay() {
       Events e = new Events();
       evTitle.setText(""+e.getEventName());
       evWhen.setText("When: "+ e.getEventDate());
       evWhere.setText("Where: "+ e.getEventVenue());
       evDescription.setText("Description: "+ e.getEventDetail());
       evOpportunity.setText("Opporunity: "+ e.getEventOpportunity());
       evMoreDet.setText("More Details: "+ e.getEventMoreDetails());
   }
4

3 に答える 3

1

このコードは機能しません...戻り値の型getEventで呼び出されるメソッドがあるのはなぜですか? voidあなたが望むのはおそらくそのようなものです:

public Event getEvent(String tableClick) {
Events e = new Events();
try {
    pst = conn.prepareStatement("SELECT * FROM Event WHERE eventID='"+tableClick+"' ");
    rs = pst.executeQuery();
    while(rs.next()){      
    e.setEventName(rs.getString(2));
    System.out.println(rs.getString(2));
    e.setEventDate(rs.getDate(3));
    e.setEventTime(rs.getString(4));
    e.setEventVenue(rs.getString(5));
    e.setEventDetail(rs.getString(6));
    e.setEventOpportunity(rs.getString(7));
    e.setEventMoreDetails(rs.getString(8));
    e.setEndTime(rs.getString(9));
    rs.close();
    pst.close();
    return e;
   }
} catch(SQLException ex) {
    ex.printStackTrace();
    return null;
} 

} //end getEvent

コードがどのように機能しているかはわかりませんが、おそらくビューからそのメソッドを呼び出して値を表示したいと思うでしょう。オブジェクトを作成したばかりなので、changeDisplayメソッドが表示されています...null

おそらく次のようなものが必要です:

public void changeDisplay(Events e) {
    evTitle.setText(""+e.getEventName());
    evWhen.setText("When: "+ e.getEventDate());
    evWhere.setText("Where: "+ e.getEventVenue());
    evDescription.setText("Description: "+ e.getEventDetail());
    evOpportunity.setText("Opporunity: "+ e.getEventOpportunity());
    evMoreDet.setText("More Details: "+ e.getEventMoreDetails());
}
于 2013-01-20T15:53:25.803 に答える
0

Eventsメソッドで作成しているchangeDisplay()は新しいオブジェクトであり、 で入力したオブジェクトではありませんgetEventefromgetEventメソッドを返す/保存し、必要な場所で使用する必要があります。

于 2013-01-20T15:52:52.977 に答える
0

getEvent 関数では、Events クラスのオブジェクトを作成し、セッターを使用してデータベース値を設定しています。

しかし、changeDisplay Function では、再び Events クラスのオブジェクトを作成し、getter を使用して値を取得しようとしています。

public void changeDisplay() {
   Events e = new Events();

changeDisplay 関数で Events クラスの新しいオブジェクトを作成する代わりに、getEvent 関数で作成したものと同じ Events クラスのオブジェクトを使用する必要があります。

別のオブジェクトに値を設定し、Events クラスの別のオブジェクトから値を取得しようとしているため、null 値が表示されます。

于 2013-01-20T15:54:26.473 に答える