我有一个名为Client的表,其中clientID和clientName作为字段,我想在组合框中显示两个字段,但我只想在单击添加按钮后将clientID插入到我的另一个表中。
我有这个方法来填充我的组合框
private void fillClient(){
Connection con = getConnection();
String sql = "Select clientID, clientfname from client";
try {
pst=con.prepareStatement(sql);
optset = pst.executeQuery();
while (optset.next()){
String id = optset.getString("clientID");
String nme = optset.getString("clientfname");
String cmb = (id+"-"+nme);
clientCmb.addItem(cmb);
}
} catch (SQLException ex) {
Logger.getLogger(Reservation.class.getName()).log(Level.SEVERE, null, ex);
}}
问题是,插入的数据是组合字符串。
以下是我将所选项目插入数据库的方法。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Connection con = getConnection();
String client = (String) clientCmb.getSelectedItem();
String driver = (String) driverCmb.getSelectedItem();
String van = (String) vanCmb.getSelectedItem();
String sql = "Insert into reservation (clientID,van,driverID) values('"+client+"','"+driver+"','"+van+"')";
try {
Statement stmt = con.createStatement();
stmt.executeUpdate(sql);
JOptionPane.showMessageDialog(this, "Saved");
} catch (SQLException ex) {
Logger.getLogger(Reservation.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:2)
创建一个代表客户端的模型类并覆盖toString
:
public class Client {
private int id;
private String firstName;
private String lastName;
// Getters and setters
public String toString() {
return firstName + " " + lastName;
}
}
组合框项目中的文本将根据toString
方法显示。将此模型类设置为JComboBox
的类型参数。
JComboBox<Client> comboBox = new JComboBox<>();
选择组合框项目后,您现在可以获得整个对象。用这个对象做你想做的事。获得身份证,姓名或其他。
P.S。如果所有代码都是由NetBeans GUI构建器生成的,那么我表示哀悼。
答案 1 :(得分:1)
快速解决方法是拆分结果字符串并获取第一个值。
String[] parts = string.split("-");
String id = parts[0];
编辑:Branislav的回答更好。
答案 2 :(得分:1)
String client = (String) clientCmb.getSelectedItem();
之后
这样做
String[] clientDetails = client.split("-");
String clientID = clientDetails[0];
String driver = (String) driverCmb.getSelectedItem();
String van = (String) vanCmb.getSelectedItem();
String sql = "Insert into reservation (clientID,van,driverID) values('"+clientID+"','"+driver+"','"+van+"')";
try {
Statement stmt = con.createStatement();
stmt.executeUpdate(sql);
JOptionPane.showMessageDialog(this, "Saved");
} catch (SQLException ex) {
Logger.getLogger(Reservation.class.getName()).log(Level.SEVERE, null, ex);
}
}