Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaBean值在sql中为空_Java_Sql_Swing_Listener_Javabeans - Fatal编程技术网

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);
,它是否符合此处的逻辑()我没有,因为我没有看到您的代码。但是如果您不确定,请看这个示例,它可能会帮助您: