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());
}
答案 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类的不同对象获取值,这就是为什么它为你显示空值。