如何将值从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中的最佳方法是什么?
答案 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
,在