java如何在jComboBox中显示多个字段,但只在数据库中插入一个字段?
我有一个名为Client的表,其中clientID和clientName作为字段,我想在组合框中显示这两个字段,但我只想在单击add按钮后将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);
}
}
# 1 楼答案
创建一个表示您的客户机的模型类并重写
toString
:组合框项目中的文本将根据
toString
方法显示。将此模型类设置为JComboBox
的类型参数选择组合框项目后,您现在可以获得整个对象。你想用那个东西做什么都行。获取id、姓名或其他信息
另外,如果所有这些代码都是由NetBeans GUI builder生成的,我表示哀悼
# 2 楼答案
一个快速修复方法是拆分结果字符串并获取第一个值
编辑:布兰尼斯拉夫的答案要好得多
# 3 楼答案
在
String client = (String) clientCmb.getSelectedItem();
之后 这样做