2015-09-27 54 views
0

你怎么去把记录到当一个项目从一个JComboBox,选择一个JTextField选择时记录填写的JTextField?例如,我正在制定航班预订系统,并且我有一个可用航班的组合框。下面是带有指定信息的文本字段,例如出发日期,出发时间,到达日期等。我该如何做到这一点,以便当用户从组合框中选择一个项目时(例如,航班名称为CX9005),相应的信息从同一行显示在文本字段中? (前出发的日期是2015年11月12日)从JComboBox中(Java数据库)

编辑:

所以我想这样做,与FF。代码,但我得到了语法错误和ResultSet未打开错误。

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()); 
    } 
} 

此外,我可能不太清楚我的原始帖子。我想要这样做,以便当用户从组合框中选择一个航班时,该航班的所有详细信息都会显示在相应的文本字段中。 (如出发日期,出发时间,目的地等)我很困惑如何使这项工作,所以帮助将不胜感激!

回答

0

您使用getSelectedItem()getSelectedValue()comboBox中获得文本。

然后,您可以创建一个MySQL查询,如:

 String flightName = yourComboBox.getSelectedItem().toString(); 
     String query= "Select * from yourTable where flightName = \'"+flightName+"\';"; 

然后你就可以在部分与设置将导致所有testfields

第一家门店结果执行使用executeQuery()

此查询现在在ResultSet对象

 rs = stmt.executeQuery(query); 
     rs.next(); 

现在你有结果对象rs

使用rs.getString(得到columnnumber)从结果

如得到记录。

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

这样做是为了获得所有必需的字符串。 并采用setText()方法

+0

您好,感谢您花时间回答。我向操作添加了更多细节。 –

+0

有看到添加的部分。这必须解决你的问题。我想你错过了rs.next();声明 – CoderBrain

0
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”作为列名。