【问题标题】:Load database Field Values to A JCombobox将数据库字段值加载到 JCombobox
【发布时间】:2012-09-15 15:28:22
【问题描述】:

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

【问题讨论】:

  • 我不敢相信有人“足够好” Downvote 我的问题,而我只是在问..

标签: java oracle swing jdbc jcombobox


【解决方案1】:
String [] str = new String[]{ids};

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

【讨论】:

    【解决方案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
        }
    }
    

    b) 不要在try - catch - finally 中创建任何Objects,之前要做好准备

    意思是cboId = new JComboBox(str);

    c) 把 JDBC 中的所有数据放到ComboBoxModel,在之前做好准备

    【讨论】:

      【解决方案3】:

      您可以使用此代码:

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

      在这段代码中,您使用您的Strings 创建一个Vector,然后直接调用JComboBox(Vector items) constructor of JComboBox

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-19
        • 2012-01-31
        • 2014-02-23
        • 2012-12-02
        • 2018-09-30
        相关资源
        最近更新 更多