将数据库字段值加载到JCombobox

时间:2012-09-24 07:20:08

标签: java oracle swing jdbc jcombobox

如何将值从Oracle数据库加载到JComboBox以使用户更容易从I中选择尝试过:

    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中的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

您可以使用此代码:

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

在此代码中,您使用Vector创建Strings,然后直接调用JComboBox(Vector items) constructor of JComboBox

答案 1 :(得分:2)

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

这意味着您的String数组只有一个id值,您已加载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而不是数组。

答案 2 :(得分:2)

有三个重要领域

a)关闭JDBC Objects中的所有finally 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,在

之前做好准备