2

如何将值从 Oracle db 加载到 JComboBox 以使用户更容易从中选择 我试过这个:

    Connection dbcon = null;
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        dbcon = DriverManager.getConnection("
             jdbc:oracle:thin:@localhost:1521:XE", "USERNAME", "PASSWORD");
        Statement st = dbcon.createStatement();
        String combo = "Select EMP_IDNUM from employees";
        ResultSet res = st.executeQuery(combo);
        while(res.next()){
            String ids = res.getString("EMP_IDNUM");
            String [] str = new String[]{ids};
            cboId = new JComboBox(str);
        }
    } catch (Exception d) {
        System.out.println(d);
    }

这只是让我第一个值进入 JComboBox cboID。将整个字段数据 (EMP_IDNUM) 加载到 Jcombobox 中的最佳方法是什么?

4

3 回答 3

2
String [] str = new String[]{ids};

这意味着您的 String 数组只有一个您已加载的 ids 值String ids = res.getString("EMP_IDNUM");

if(rs.getRow()>0){
 String [] str = new String[res.getRow()];
 int i=0;
 while(res.next()){
   str[i++] = res.getString("EMP_IDNUM");
 }
}
JComboBox jcb = new JComboBox(str);

除了数组,您还可以使用 Vector 来创建 JComboBox。

于 2012-09-24T07:33:59.747 回答
2

有三个重要领域

a)关闭所有JDBC Objectsfinally block,因为这些Object不是,从来没有GC'ed

try {

} catch (Exception d) {
    System.out.println(d);
} finally {
    try {
        st.close()
        res.close() 
        dbcon.close()
    } catch (Exception d) {
        //not important
    }
}

b)不要创建任何Objects内部try - catch - finally,之前准备好

意义cboId = new JComboBox(str);

c) 将所有数据从 JDBC 放到ComboBoxModel, 之前准备好

于 2012-09-24T07:50:53.853 回答
2

您可以使用以下代码:

Vector v = new Vector();
while(res.next()){
    String ids = res.getString("EMP_IDNUM");
    v.add(ids)
}
JComboBox jcb = new JComboBox(v);

在此代码中,您使用 . 创建一个VectorStrings然后直接调用JComboBox(Vector items)JComboBox 的构造函数

于 2012-09-24T07:25:57.767 回答