
Ayuda cargar combobox con base de datos sql
Publicado por Mike (14 intervenciones) el 10/05/2015 02:25:37
Hola y muy buenas noches, tardes o días segun donde se encuentren les comento mi caso quisiera saber como poder cargar un combobox con informacion de una entidad de una base de datos pero que me los ordene alfabeticamente pero que si selecciono cualquier elemento me tome el id del elemento que seleccione, les digo esto porque he probado de hacerlo de dos formas las cuales son las siguientes:
1) De esta forma, me carga el combobox con los datos y me lo ordena alfabeticamente pero cuando selecciono un item no me toma el id del item
void cargarcombogenero() {
String sql="Select nomgenero,idgenero from genero";
try {
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sql);
Genero_pel.removeAllItems();
Genero_pel.addItem("---Selecionar Genero---");
while(rs.next())
{
Genero_pel.addItem(rs.getString("nomgenero"));
}
} catch (SQLException ex) {
Logger.getLogger(users.class.getName()).log(Level.SEVERE, null, ex);
}
}

2) DE esta forma me carga el combobox en el orden en que se encuentran los datos de la tabla, me toma el id pero no me lo organiza albafeticamente
void cargarcombogenero() {
String sql="Select nomgenero,idgenero from genero ORDER BY idgenero ASC";
try {
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sql);
Genero_pel.removeAllItems();
Genero_pel.addItem("---Selecionar Genero---");
while(rs.next())
{
Genero_pel.addItem(rs.getString("nomgenero"));
}
} catch (SQLException ex) {
Logger.getLogger(users.class.getName()).log(Level.SEVERE, null, ex);
}
}

CUALQUIERA DE LOS DOS METODOS los llamo en la siguiente sentencia a la hora de guardar los datos:
String ins="INSERT INTO pelicula (titulo_p,anio_p,idpais,director_p,protagonistas_p,duracion,precio,sinopsis_p,idgenero) VALUES(?,?,?,?,?,?,?,?,?)";
if (Genero_pel.getSelectedIndex()==0) {
JOptionPane.showMessageDialog(null, "Género No Seleccionado", "Error", JOptionPane.ERROR_MESSAGE);
}
if (pais_pel.getSelectedIndex()==0) {
JOptionPane.showMessageDialog(null, "País No Seleccionado", "Error", JOptionPane.ERROR_MESSAGE);
}
if (Genero_pel.getSelectedIndex()>0 && pais_pel.getSelectedIndex()>0) {
try {
PreparedStatement pst = cn.prepareStatement(ins);
pst.setString(1, Titulo_pel.getText());
pst.setString(2, anio_pel.getText());
pst.setString(3, Integer.toString(pais_pel.getSelectedIndex()));
pst.setString(4, dir_pel.getText());
pst.setString(5, prota_pel.getText());
pst.setString(6, dur_pel.getText());
pst.setString(7, pre_pel.getText());
pst.setString(8, sinop_pel.getText());
pst.setString(9, Integer.toString(Genero_pel.getSelectedIndex()));
int n= pst.executeUpdate();
if(n>0)
{
JOptionPane.showMessageDialog(this, "La Pelicula Fue Añadida Satisfactoriamente");
Titulo_pel.setText(null);
anio_pel.setText(null);
dir_pel.setText(null);
prota_pel.setText(null);
dur_pel.setText(null);
pre_pel.setText(null);
sinop_pel.setText(null);
Genero_pel.setSelectedIndex(0);
pais_pel.setSelectedIndex(0);
// Generarnumeracion();
}
else
{
JOptionPane.showMessageDialog(this, "Error");
}
} catch (SQLException ex) {
Logger.getLogger(add_gen.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, "Pelicula Ya Existente");
}
}
Un profesor me sugerio cargar el combobox con dos columnas una que cargue el nombre y la otra el id, que lo rodene alfabeticamente que no deje visible la id, yq ue cuenado seleccione un nombre me tome el id y no el getselectitem del combobox, le entiendo la idea pero no tengo la mas minima ide de hacerlo, quisiera saber sus opiniones de antemano muchisimas gracias por el solo hecho de tomarse el tiempo leyendo mi caso
1) De esta forma, me carga el combobox con los datos y me lo ordena alfabeticamente pero cuando selecciono un item no me toma el id del item
void cargarcombogenero() {
String sql="Select nomgenero,idgenero from genero";
try {
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sql);
Genero_pel.removeAllItems();
Genero_pel.addItem("---Selecionar Genero---");
while(rs.next())
{
Genero_pel.addItem(rs.getString("nomgenero"));
}
} catch (SQLException ex) {
Logger.getLogger(users.class.getName()).log(Level.SEVERE, null, ex);
}
}
2) DE esta forma me carga el combobox en el orden en que se encuentran los datos de la tabla, me toma el id pero no me lo organiza albafeticamente
void cargarcombogenero() {
String sql="Select nomgenero,idgenero from genero ORDER BY idgenero ASC";
try {
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sql);
Genero_pel.removeAllItems();
Genero_pel.addItem("---Selecionar Genero---");
while(rs.next())
{
Genero_pel.addItem(rs.getString("nomgenero"));
}
} catch (SQLException ex) {
Logger.getLogger(users.class.getName()).log(Level.SEVERE, null, ex);
}
}
CUALQUIERA DE LOS DOS METODOS los llamo en la siguiente sentencia a la hora de guardar los datos:
String ins="INSERT INTO pelicula (titulo_p,anio_p,idpais,director_p,protagonistas_p,duracion,precio,sinopsis_p,idgenero) VALUES(?,?,?,?,?,?,?,?,?)";
if (Genero_pel.getSelectedIndex()==0) {
JOptionPane.showMessageDialog(null, "Género No Seleccionado", "Error", JOptionPane.ERROR_MESSAGE);
}
if (pais_pel.getSelectedIndex()==0) {
JOptionPane.showMessageDialog(null, "País No Seleccionado", "Error", JOptionPane.ERROR_MESSAGE);
}
if (Genero_pel.getSelectedIndex()>0 && pais_pel.getSelectedIndex()>0) {
try {
PreparedStatement pst = cn.prepareStatement(ins);
pst.setString(1, Titulo_pel.getText());
pst.setString(2, anio_pel.getText());
pst.setString(3, Integer.toString(pais_pel.getSelectedIndex()));
pst.setString(4, dir_pel.getText());
pst.setString(5, prota_pel.getText());
pst.setString(6, dur_pel.getText());
pst.setString(7, pre_pel.getText());
pst.setString(8, sinop_pel.getText());
pst.setString(9, Integer.toString(Genero_pel.getSelectedIndex()));
int n= pst.executeUpdate();
if(n>0)
{
JOptionPane.showMessageDialog(this, "La Pelicula Fue Añadida Satisfactoriamente");
Titulo_pel.setText(null);
anio_pel.setText(null);
dir_pel.setText(null);
prota_pel.setText(null);
dur_pel.setText(null);
pre_pel.setText(null);
sinop_pel.setText(null);
Genero_pel.setSelectedIndex(0);
pais_pel.setSelectedIndex(0);
// Generarnumeracion();
}
else
{
JOptionPane.showMessageDialog(this, "Error");
}
} catch (SQLException ex) {
Logger.getLogger(add_gen.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, "Pelicula Ya Existente");
}
}
Un profesor me sugerio cargar el combobox con dos columnas una que cargue el nombre y la otra el id, que lo rodene alfabeticamente que no deje visible la id, yq ue cuenado seleccione un nombre me tome el id y no el getselectitem del combobox, le entiendo la idea pero no tengo la mas minima ide de hacerlo, quisiera saber sus opiniones de antemano muchisimas gracias por el solo hecho de tomarse el tiempo leyendo mi caso
Valora esta pregunta


0