Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos,
Estou com uma dúvida em relação a como fazer para pegar o ID de um registro carregador numa combo box, por exemplo, uma combobox carrega e exige os registro de uma tabela do banco de dados mas preciso pegar o ID referente ao registro que será selecionado, será que alguém pode me ajudar?
Aqui o código da classe DAO onde lista todos os vendedores cadastrados na tabela no BD.
public List<VendedorBEAN> listarTodos() throws PersistenciaException {
List<VendedorBEAN> listaVendedor = new ArrayList<VendedorBEAN>();
Connection conn = Conexao.open();
PreparedStatement pstm = null;
String sql = "SELECT * FROM tb_vendedor";
try {
pstm = conn.prepareStatement(sql);
ResultSet resultset = pstm.executeQuery();
while (resultset.next()) {
VendedorBEAN vendedorBean = new VendedorBEAN();
vendedorBean.setId_vendedor(resultset.getInt("id_vendedor"));
vendedorBean.setNome_vendedor(resultset.getString("nome_vendedor"));
listaVendedor.add(vendedorBean);
}
Conexao.close(conn, pstm, resultset);
} catch (SQLException e) {
e.printStackTrace();
throw new PersistenciaException(e.getMessage(), e);
}
return listaVendedor;
}
Aqui o código que converte a lista de vendedores da classe DAO em um String
private String[] converteVendedor(List<VendedorBEAN> lista) {
String[] result = new String[lista.size()];
for (int i = 0; i < lista.size(); i++) {
VendedorBEAN vendedorBEAN = lista.get(i);
result[i] = vendedorBEAN.getNome_vendedor();
}
return result;
}
Este é o código que carrega a combobox com a String acima, porém só vem os nomes dos vendedores cadastrados no BD, como eu faço para exibir o nome e ao mesmo tempo pegar o ID do nome selecionado na combobox ??
@SuppressWarnings({ "rawtypes", "unchecked" })
private JComboBox getJcb_vendedor() {
if(jcb_vendedor == null) {
try {
VendedorDAO vendedorDAO = new VendedorDAO();
ComboBoxModel comboVendedorModel;
comboVendedorModel = new DefaultComboBoxModel(converteVendedor(vendedorDAO.listarTodos()));
jcb_vendedor = new JComboBox();
jcb_vendedor.setModel(comboVendedorModel);
} catch (PersistenciaException e) {
e.printStackTrace();
}
}
return jcb_vendedor;
}o erro está no sql
implemente o metodo
public List<VendedorBEAN> getPeloId(int id) {
List<VendedorBEAN> listaVendedor = new ArrayList<VendedorBEAN>();
Connection conn = Conexao.open();
PreparedStatement pstm = null;
String sql = "SELECT * FROM tb_vendedor WHERE id=?";
try {
pstm = conn.prepareStatement(sql);
pstm.setInt(1, id);
ResultSet resultset = pstm.executeQuery();
while (resultset.next()) {
VendedorBEAN vendedorBean = new VendedorBEAN();
vendedorBean.setId_vendedor(resultset.getInt("id_vendedor"));
vendedorBean.setNome_vendedor(resultset.getString("nome_vendedor"));
listaVendedor.add(vendedorBean);
}
Conexao.close(conn, pstm, resultset);
} catch (SQLException e) {
e.printStackTrace();
throw new PersistenciaException(e.getMessage(), e);
}
return listaVendedor;
}
Talvez você não saiba, mas dá para passar para o ComboBox um List de VendedorBEAN ao invés de um List
de String. Só que para isso, você precisará adicionar um por um usando um forreach. Assim:
>
//...
//...
Você deve mudar também a declaração do ComboBox colocando entre "<>" o objeto que será listado. Assim:
>
//...
JComboBox<VendedorBEAN> seuComboBox = getJcb_vendedor()
//...
//O Model também ganha isso
ComboBoxModel<VendedorBEAN> comboVendedorModel = new DefaultComboBoxModel<VendedorBEAN>();
//...
//...Assim, na hora que você usar getSelectedItem, você vai receber o objeto de VendedorBEAN e poderá, então, pegar o ID.