繁体   English   中英

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

[英]Fill jTextField with records when selecting from jComboBox (Java database)

从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()comboBox获取文本。

然后,您可以创建一个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)从结果中获取记录

例如。

String departureDate = rs.getString(4);
// assuming the column number is 4

这样做以获得所有必需的字符串。 并使用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()方法中建立的Connection对象。 请注意,方法名称不应以大写字母开头。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM