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

1

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

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 не работает для меня, потому что мне нужно значение ID из базы данных, а не выбранный индекс.

Есть идеи?

Теги:
jdbc
swing
jcombobox

2 ответа

0
Лучший ответ

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

0

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

Дополнительную информацию и пример кода см. В Combo Box с Custom Renderer.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню