java将数据库中的值加载到comboBox中

时间:2014-07-27 12:42:08

标签: java

您好我的目标是使用数据库中的值加载组合框,下面的代码工作正常,一个问题我得到第一个项目的两个,所以我必须做些什么来防止这个

public void loadCombos() {
    try {
        try {
            String cs = "jdbc:mysql://localhost:3307/booksalvation6";
            String user = "root";
            String password = "letmein";
            jComboBox2.removeAllItems();// make sure old data gone
            PreparedStatement pstpost;
            ResultSet rspost;
            conCombos = DriverManager.getConnection(cs, user, password);

            for (int i = 1; i < 11; i++) {

                String querypost = "select * from post "
                        + "WHERE postage_id =" + i;

                // load postage selections
                pstpost = conCombos.prepareStatement(querypost);
                rspost = pstpost.executeQuery();

                while (rspost.next()) {
                    String Mypost = rspost.getString(6);
                    jComboBox2.addItem(Mypost);
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(BasicFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
        conCombos.close();
    } catch (SQLException ex) {
        Logger.getLogger(BasicFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
}

1 个答案:

答案 0 :(得分:0)

您正在使用PreparedStatement但未正确使用。

由于您只查找一列来获取postage_id介于1到10之间的所有列值。

您可以在单个查询中实现它:

select unique(combo_value_column_name) from post 
                                       where postage_id>=? and postage_id<=?

通过调用PreparedStatement#setInt(index,value)设置参数,将其设置为1和10。

只需提取单列,只提取唯一值

Using Prepared Statements

上的 Java Tutorial 下进行了更好的解释

而不是先调用JComboBox#addItem()准备整个列表,然后最后设置一次。

Read more...

最后注意:遵循Java命名约定。