2012-09-24 52 views
2

从我是否尝试过如何从一个Oracle数据库来的JComboBox负荷值,使之更容易为用户选择这样的:加载数据库字段值的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中的最佳方法是什么?

+0

我无法相信有人是“足够好” DOwnvote我的问题Whle我只是Askng .. – ErrorNotFoundException

回答

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

这意味着你的字符串数组只有一个您已加载的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

有三个重要领域

a)紧靠在finally block所有JDBC Objects,因为这些Object都没有,从来没有GC'ed

try { 

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

二)没有创建任何Objectstry - catch - finally,准备之前

含义cboId = new JComboBox(str);

三)把所有的数据从JDBC到ComboBoxModel,准备在此之前