当从jComboBox中选择一个项目时,如何将记录放入jTextField?例如,我正在建立一个航班预订系统,我有一个包含可用航班的组合框。下面是带有指定信息的文本字段,如出发日期,出发时间,到达日期等。如何在用户从组合框中选择项目时(例如,航班名称为CX9005)进行相应的信息从同一行显示在文本字段中? (例如,出发日期是2015年11月12日)
编辑:
所以我尝试用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 :(得分:0)
您可以使用comboBox
或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)从结果中获取记录
EG。
String departureDate = rs.getString(4);
// assuming the column number is 4
执行此操作以获取所有必需的字符串。
并使用setText()
方法
答案 1 :(得分: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”作为列名。