Как я могу получить значение идентификатора из базы данных при выборе элемента из выпадающего списка?

У меня есть этот метод, который заполняет мой комбобокс:

public DefaultComboBoxModel llenarComboFamilia() throws SQLException {
    String query = "select * from familias";
    DefaultComboBoxModel df = new DefaultComboBoxModel();
    abrirConexion();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next()) {
        //df.addElement(rs.getObject("This is the ID I need"));
        df.addElement(rs.getString("String from DB"));
    }
    cerrarConexion();
    return df;
}

Тогда я загружаю это с:

jComboBox2.setModel(con.llenarComboFamilia());

И когда я нажимаю кнопку "Зарегистрироваться", я получаю:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    Persona p = new Persona(jTextField7.getText(), 1, 
            jComboBox2.getSelectedIndex() + 1, 
            jTextField5.getText(), jTextField6.getText());

    con.insertarPersonasProp(p);

}

Но jComboBox2.getSelectedIndex() + 1 у меня не работает, потому что мне нужно значение идентификатора из базы данных, а не выбранный индекс.

Есть идеи?

2 ответа

Решение

Вы можете использовать Вектор для хранения идентификаторов. просто заполните вектор с id каждого элемента, когда вы добавляете элемент в выпадающий список. Вектор и выпадающий список будут иметь одинаковое количество элементов, поэтому идентификатором элемента 10 в выпадающем списке будет элемент 10 в векторе. тогда вы можете получить идентификатор элемента, выбранного в данный момент в выпадающем списке, из вектора, такого как vectorIDs.get( jComboBox2.getSelectedIndex ())

Создайте пользовательский объект, содержащий поля "Id" и "Description" из вашего запроса SQL. Затем вы добавляете этот объект в выпадающий список и используете пользовательский рендер.

См. Combo Box With Custom Renderer для получения дополнительной информации и примера кода.

Другие вопросы по тегам