JavaBean值在sql中为空
当JavaBean值在sql中为空,java,sql,swing,listener,javabeans,Java,Sql,Swing,Listener,Javabeans,当System.out.println(rs.getString(2)从数据库打印一个值时,我无法在bean中填充此信息 我使用mutators来填充JavaBean,但是当我尝试在MVC框架的视图类中使用访问器时,它会显示null 这是我从观景班打来的电话 public void getEvent(String tableClick) { Events e = new Events(); try { pst = conn.prepareStatemen
System.out.println(rs.getString(2)
从数据库打印一个值时,我无法在bean中填充此信息
我使用mutators来填充JavaBean
,但是当我尝试在MVC框架的视图类中使用访问器时,它会显示null
这是我从观景班打来的电话
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
视图类中的方法
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
在
changesplay()中创建的事件
方法是一个新对象,而不是您在getEvent
中填充的对象。您需要从getEvent
方法返回/存储e
,并在需要时使用它。此代码无法工作…为什么有一个名为getEvent
的方法,返回类型为void
呢?您想要的可能是这样的他这样说:
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());
}
我不知道您的代码是如何工作的,但您可能希望从视图中调用该方法,然后显示值。您的changeddisplay
方法正在显示null
,因为您刚刚创建了对象
您可能需要以下内容:
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
在getEvent函数中,您正在创建一个Events类的对象,并使用setter在其中设置数据库值
但在changeDisplay函数中,您再次创建事件类的对象,并尝试使用getter获取值
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());
}
代替在changeDisplay函数中创建新的事件类对象,您必须使用在getEvent函数中创建的相同事件类对象
因为您在不同的对象中设置了值,并且试图从事件类的不同对象中获取值,这就是它向您显示空值的原因。没有人知道,为了获得更好的帮助,请尽快发布一个简短、可运行、可编译的硬编码值,而不是JDBC
@MooHa:不要忽略对您找到的帮助答案进行投票ful.Events e=object.getEvent(“字符串”);
不是我想做的事。因为我在控制器中提供了这个参数?还有其他方法吗?这是一个例子,你可以得到你想要的任何参数,然后作为参数传递给视图……我不知道你是如何构造你的应用程序的,我可以从我的控制器传递给视图。但我很好奇,这样做是一种好的做法吗从控制器传递。在控制器中,它现在有Events e=model.getEvent(tableClick);
和view.changesplay(e);
,它是否符合此处的逻辑()我没有,因为我没有看到您的代码。但是如果您不确定,请看这个示例,它可能会帮助您: