JavaBean值为空,带有sql

时间:2013-01-20 15:45:35

标签: java sql swing listener javabeans

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

3 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:0)

您在Events方法中创建的changeDisplay()是一个新对象,而不是您在getEvent中填充的对象。您需要从e方法返回/存储getEvent并在需要时使用它。

答案 2 :(得分:0)

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

但是在changeDisplay函数中,你再次创建了一个Events类对象,并尝试使用getter获取值。

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

除了在changeDisplay函数中创建Events类的新对象之外,您还必须使用在getEvent函数中创建的Events类的相同对象。

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