1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Duda Guardar datos de un combo box a una base de datos

Tema en 'Java' comenzado por Diegox, 16 de Julio de 2017.

  1. Diegox

    Diegox Nuevo Miembro

    Se incorporó:
    16 de Julio de 2017
    Mensajes:
    1
    Me gusta recibidos:
    0
    Puntos de trofeos:
    1
    Género:
    Hombre
    Hola, espero me puedan ayudar llevo dos días intentando dar con una solución pero no puedo, tengo una base de datos llamada catalogo, tiene dos tablas una llamada cliente y contiene: idcliente,rfc,numero,telefono,idciudad(llave foranea), y la otra es ciudad tiene los datos: idciudad,ciudad,
    ambos id son de tipo entero, en netbeans cree una conexion donde en clientes agrege un combo box, en el cual me aparecen las ciudades, mi pregunta es como logro hacer que cuando un usuario se registre y en el combo box seleccione una ciudad, se me guarde el nombre de la ciudad y no el idciudad, espero darme a entender y me puedan ayudar :(
    private void jbtnGuardarActionPerformed(java.awt.event.ActionEvent evt) {

    //llamar a la clase conectar
    Conectar objConectar=new Conectar();
    //paso 2 crear la variable de conexion con el metodo conexion
    Connection objConexion=objConectar.conexion();
    if(jtxtCliente.getText().trim().isEmpty()
    ||jtxtRfc.getText().trim().isEmpty()
    ||jtxtNombre.getText().trim().isEmpty()
    ||jtxtTelefono.getText().trim().isEmpty()
    ||jtxtCalle.getText().trim().isEmpty()
    ||jtxtNumero.getText().trim().isEmpty()
    ||jtxtColonia.getText().trim().isEmpty()
    ||jtxtCp.getText().trim().isEmpty()
    ||jcmbCiudad.getSelectedItem().equals("")){
    JOptionPane.showMessageDialog(this,"Faltan campos por capturar","Datos invalidos",JOptionPane.INFORMATION_MESSAGE);
    }else{

    //paso 3 Variable temporal que almacenan lo que tienen nuestras cajas de texto
    int id_cliente=Integer.parseInt(jtxtCliente.getText());
    String rfc=jtxtRfc.getText();
    String nombre=jtxtNombre.getText();
    String telefono=jtxtTelefono.getText();
    String calle=jtxtCalle.getText();
    String numero=jtxtNumero.getText();
    String colonia=jtxtColonia.getText();
    int cp=Integer.parseInt(jtxtCp.getText());
    int idciudad=jcmbCiudad.getSelectedIndex();

    //paso 4 variable para nuestra sentencia SQL
    String sql="INSERT INTO clientes(idclientes,rfc,nombre,telefono,calle,numero,colonia,cp,idciudad)VALUES(?,?,?,?,?,?,?,?,?)";
    //paso 5 Preparar la sentencia a ejecutar mediante un try catch
    try{
    PreparedStatement ps=objConexion.prepareStatement(sql);
    ps.setInt(1,id_cliente);
    ps.setString(2,rfc);
    ps.setString(3,nombre);
    ps.setString(4,telefono);
    ps.setString(5,calle);
    ps.setString(6,numero);
    ps.setString(7,colonia);
    ps.setInt(8,cp);
    ps.setInt(9,idciudad);

    //ejecutar la sentencia
    ps.executeUpdate();
    }catch (Exception ex){
    System.out.println("Error al insertar"+ex.getMessage());
    }
    JOptionPane.showMessageDialog(null,"Registro guardado","Registro de usuario",JOptionPane.OK_OPTION);
    Limpiar();
    }
    este es mi codigo del boton guardar.
     
  2. Dawud

    Dawud Miembro conocido

    Se incorporó:
    4 de Abril de 2016
    Mensajes:
    657
    Me gusta recibidos:
    498
    Puntos de trofeos:
    63
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Villahermosa, Tabasco

    Bueno de acuerdo a lo que dices... hay formas de realizar la operación pero eso depende de los datos, En este caso si las ciudades que muestras en el jComboBox lo agregas estáticos no sería una buena programación ya que primero tendrías que guardar la ciudad y luego recuperar el id de esa ciudad para poder guardarla y hacer referencia al usuario... Y un error de programación esos datos serán fijos... Sería mas adecuado que las ciudades que muestras en el jComboBox se extraigan desde la base de datos y se muestren...

    Ahora mencionas que cuando un cliente se registre y ese cliente seleccione una ciudad que guarde el nombre y no su id... o_Oo_Oo_O Pues déjame decir que no es bueno, nada bueno, sería un breve error, un exit 0... :confused::confused: No puedes guardar el nombre de la ciudad en la tabla usuarios en la columna idCiudad ya que esa columna como tu lo definiste es de tipo entero o sea que no puedes guardar un tipo string, debe de ser un tipo entero...

    En la tabla ciudad tienes las siguiente ciudades por ejemplo:

    Código (Text):
    Tabla ciudad
    idCiudad      ciudad
           1              Sorona
           3          Puerto rico
           4              Hidalgo
           5            Marruecos
     

    Cuando el usuario seleccione una ciudad en el jCombobox una manera, realices una consulta query para obtener el id de la ciudad seleccionada en donde ciudad = ciudadSeleccionada ... Por ejemplo:

    Código (Text):
      ciudad =   select id from ciudad where ciudad = Puerto rico;
    Una vez recuperada el id de la ciudad prosigue en ejecutar la inserción del nuevo cliente por ejemplo
    Código (Text):
    insert into usuario idcliente,rfc,numero,telefono,idciudad values( 1, FDSDFDSAV00, 9999999, ciudad  );
    Y si se realiza una consulta de la tabla cliente debe quedar de la siguiente manera:

    Código (Text):

    select * from cliente;

    Tabla cliente
    idCliente           RFC                   telefono     idCiudad
           1          FDSDFDSAV00     9999999           4
     
    En conclusión para guardar el nuevo registro cliente debes de almacenar el id de la ciudad no el nombre

    Otra manera mas eficiente puedes analizar este video...

     

Comparte esta página