-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 中填充此信息。

我正在使用 mutators 来填充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

这段代码不能工作......为什么你有一个getEventvoid返回类型调用的方法?你想要的可能是这样的:

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()一个新对象,而不是您填充的对象getEvent。您需要返回/存储efromgetEvent方法并在需要时使用它。

于 2013-01-20T15:52:52.977 回答
0

在 getEvent 函数中,您正在创建 Events 类的对象,并使用 setter 在其中设置数据库值。

但是在 changeDisplay Function 中,您再次创建了 Events 类的对象并尝试使用 getter 获取值。

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

代替在 changeDisplay 函数中创建 Events 类的新对象,您必须使用在 getEvent 函数中创建的 Events 类的相同对象。

因为您在不同的对象中设置了值,并且您试图从 Events 类的不同对象中获取值,这就是它向您显示空值的原因。

于 2013-01-20T15:54:26.473 回答