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);
    }

これは、JComboBoxcboIDに最初の値を取得するだけです。フィールドデータ全体(EMP_IDNUM)をJcomboboxにロードする最良の方法は何ですか?

4

3 に答える 3

2

このコードを使用できます:

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

このコードでは、を使用してを作成し、JComboBoxのコンストラクターを直接呼び出しVectorます。StringsJComboBox(Vector items)

于 2012-09-24T07:25:57.767 に答える
2
String [] str = new String[]{ids};

これは、文字列配列にロードしたids値が1つしかないことを意味します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

3つの重要な領域があります

JDBC Objectsa)すべてを閉じます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
    }
}

Objectsb)内部を作成しないtry - catch - finallyで、前に準備してください

意味cboId = new JComboBox(str);

c)JDBCからのすべてのデータをに配置しComboBoxModel、前に準備します

于 2012-09-24T07:50:53.853 に答える