编辑(新):
仍然没有弄清楚如何填充cboxCustomers
。我在过去的一两天里一直在这里,但没有运气。
如果有人可以提供帮助:http://pastebin.com/e5wibRYw
我从cats
转到customers
,顺便说一句。
我尝试了Mr. Xymon's
方法,但没有正确实现,因为它不起作用。
无论我用来处理人口的事件是什么,我总是得到NullPointerException
我想要使用的控件/事件。
OLD:
有一个JForm
。在它上面,有一个组合框。还有一张带猫的桌子 - cats
。每只猫都有id
和catName
。 击>
我想要做的是当我点击组合框,然后展开它时,用id
表中找到的所有cats
只猫填充它。
SLOVED。 Asnwer在下面。
不幸的是,我从unreported exception java.sql.SQLException
指示的行中收到了很多>
:
private void cboxCatsMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
// create an array list to be filled with cat's ids
ArrayList<String> cats = new ArrayList<String>();
String query = "SELECT id FROM cats ORDER BY id";
>java.sql.PreparedStatement stm = connection.prepareStatement(query);
>ResultSet rs = stm.executeQuery(query);
>while(rs.next()){
>String cat = rs.getString("id");
// add cat's ids tp the array list
cats.add(cat);
}
>rs.close();
// populate the combo box
DefaultComboBoxModel model = new DefaultComboBoxModel(cats.toArray());
cboxCats.setModel(model);
}
OLD ANSWER:
我想我修好了。我只需将所有突出显示的代码行包装在一个大try-catch
语句中,该语句将捕获SQLException
。问题是 - 当我展开它时,组合框不会填充id
值。这是为什么?我使用了错误的事件吗?
答案 0 :(得分:2)
使用cat的名称而不是id来填充组合框不是更好吗?我通过直接将字段值添加到模型而不是使用ArrayList来提出不同的解决方案。您必须在构造函数中执行它以在加载表单时填充组合框。
DefaultComboBoxModel list = new DefaultComboBoxModel();
JComboBox cbo_cats = new JComboBox(list);
// at constructor or a user-defined method that's called from constructor
try{
// assume that all objects were all properly defined
s = con.createStatement();
s.executeQuery("SELECT * FROM cats ORDER BY catName");
rs = s.getResultSet();
while(rs.next()){
//int id = rs.getInt("id");
//list.addElement(id);
String c = rs.getString("catName");
list.addElement(c);
}
}catch(Exception err){
System.out.println(err);
}
正如您所看到的,我没有使用预备语句,但您可以轻松更改它。