从jComboBox(Java数据库)中选择时,用记录填充jTextField

从jComboBox(Java数据库)中选择时,用记录填充jTextField,java,mysql,swing,Java,Mysql,Swing,当从jComboBox中选择一个项时,如何将记录放入jTextField?例如,我正在做一个航空公司预订系统,我有一个包含可用航班的组合框。下面是带有指定信息的文本字段,如出发日期、出发时间、到达日期等。如何使其在用户从组合框中选择项目时(例如航班名称为CX9005),同一行的相应信息显示在文本字段中?(例如,出发日期为2015年11月12日) 编辑: 所以我试着用ff做这件事。代码,但我得到了一个语法错误和一个ResultSet not open错误 private void combo_Fl

当从jComboBox中选择一个项时,如何将记录放入jTextField?例如,我正在做一个航空公司预订系统,我有一个包含可用航班的组合框。下面是带有指定信息的文本字段,如出发日期、出发时间、到达日期等。如何使其在用户从组合框中选择项目时(例如航班名称为CX9005),同一行的相应信息显示在文本字段中?(例如,出发日期为2015年11月12日)

编辑:

所以我试着用ff做这件事。代码,但我得到了一个语法错误和一个ResultSet not open错误

private void combo_FlightItemStateChanged(java.awt.event.ItemEvent evt) {                                              

    try{
    flightID = combo_Flight.getSelectedItem().toString();
    String flightName = combo_Flight.getSelectedItem().toString();  
    String query = "Select * from ACCOUNTS where flightName = \'"+flightName+"\';";

    rs = stmt.executeQuery(query);
    }
    catch(SQLException err){
        JOptionPane.showMessageDialog(UserModule.this, err.getMessage());
    }
}                  
此外,如果有必要,我还可以使用此函数连接到我的数据库

public void DoConnect() {
    try{
        String host = "jdbc:derby://localhost:1527/UserAccounts";
        String uName = "Bryan";
        String uPass = "Cruz";
        con = DriverManager.getConnection(host, uName, uPass);

        stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
        ResultSet.CONCUR_UPDATABLE);
        String sql = "SELECT * FROM ACCOUNTS";
        rs = stmt.executeQuery(sql);
    }catch(SQLException err){
        JOptionPane.showMessageDialog(Connect.this, err.getMessage());
    }
}

另外,我可能对我原来的帖子不太清楚。我希望这样,当用户从组合框中选择航班时,该航班的所有详细信息都会显示在相应的文本字段中。(例如出发日期、出发时间、目的地等)我不知道如何使这项工作顺利进行,因此非常感谢您的帮助

使用
getSelectedItem()
getSelectedValue()
组合框中获取文本

然后可以创建一个
MySQL
查询,如下所示:

      String flightName = yourComboBox.getSelectedItem().toString();  
      String query= "Select * from yourTable where flightName = \'"+flightName+"\';"; 
然后,您可以使用
executeQuery()

现在,对于所有
testfields

首先将结果存储在ResultSet对象中

      rs = stmt.executeQuery(query);
      rs.next();
现在在对象rs中得到了结果

使用rs.getString(columnNumber)从结果中获取记录

例如

执行此操作以获取所有必需的字符串。 并使用
setText()
方法在相关列中设置它们

flightID = combo_Flight.getSelectedItem().toString();
String flightName = combo_Flight.getSelectedItem().toString();  
上述两种说法的意义是什么?不能从同一组合框中获取两个值。您可以获得flightID或flighName

String query = "Select * from ACCOUNTS where flightName = \'"+flightName+"\';";
但是我有一个语法错误

不要尝试手动生成SQL字符串。相反,您可以使用PreparedStatement。它将确保使用正确的分隔符,以便您只关注SQL语句:

String flightName = combo_Flight.getSelectedItem().toString();  

String query = "Select * from ACCOUNTS where flightName = ?";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString( 1, flightName );

ResultSet rs = stmt.executeQuery();
因此,您需要访问在
doConnect()
方法中建立的连接对象。注意,方法名称不应以大写字符开头


此外,我认为数据库列名的标准是将列中的单词大写,因此您应该使用“FlightName”而不是“FlightName”作为列名。

您好,感谢您花时间回答。我在op中添加了更多细节。请参见添加的部分。那一定能解决你的问题。我想你错过了下一场比赛;陈述
String flightName = combo_Flight.getSelectedItem().toString();  

String query = "Select * from ACCOUNTS where flightName = ?";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString( 1, flightName );

ResultSet rs = stmt.executeQuery();