Si necesitas un código de programación en específico, escríbeme al formulario de contacto.

BUSCA TU CÓDIGO


BUSCA MÁS CÓDIGOS DE PROGRAMACIÓN AQUÍ:

▷ Código JAVA: Modificar registros de una base de datos


Código JAVA anterior: 
Guardar imagen en una base de datos.
-------------------------------------------------------------------------------------------
Este post está orientado a la aplicación e implementación de un fragmento de código JAVA, que nos permitirá actualizar los registros de una base de datos; con lo cual, se le dará la opción y/o alternativa al usuario del software, para que pueda corregir o cambiar desde los módulos y/o formularios respectivos del programa, ciertos datos que guardó previamente en el sistema, y de esta manera poder mantener una información real y actualizada de su empresa, negocio, y demás:

Método Actualizar:
Pool metodospool = new Pool();    

public void Actualizar(String nombres, String apellidos, String email, String celular, 
                      String direccion, String ciudad, String idcontacto){

int confirmar = JOptionPane.showConfirmDialog(null, "¿Desea modificar los datos actuales?");

if(confirmar == JOptionPane.YES_OPTION){

    Connection conexion = null;
    
    try {
    
        conexion = metodospool.dataSource.getConnection();
        
        String Ssql = "UPDATE contacto SET nombres=?, apellidos=?, email=?, celular=?, direccion=?, ciudad=? "
                    + "WHERE id_contacto=?";
        
        PreparedStatement prest = conexion.prepareStatement(Ssql);
        
        prest.setString(1, nombres);
        prest.setString(2, apellidos);
        prest.setString(3, email);
        prest.setString(4, celular);
        prest.setString(5, direccion);
        prest.setString(6, ciudad);
        prest.setString(7, idcontacto);
        
        if(prest.executeUpdate() > 0){
        
            JOptionPane.showMessageDialog(null, "Los datos han sido modificados con éxito", "Operación Exitosa", 
                                          JOptionPane.INFORMATION_MESSAGE);
            
        }else{
        
            JOptionPane.showMessageDialog(null, "No se ha podido realizar la actualización de los datos\n"
                                          + "Inténtelo nuevamente.", "Error en la operación", 
                                          JOptionPane.ERROR_MESSAGE);
        
        }
        
    } catch (SQLException e) {
    
        JOptionPane.showMessageDialog(null, "No se ha podido realizar la actualización de los datos\n"
                                          + "Inténtelo nuevamente.\n"
                                          + "Error: "+e, "Error en la operación", 
                                          JOptionPane.ERROR_MESSAGE);
    
    }finally{
    
        if(conexion!=null){
        
            try {
                
                conexion.close();
            
            } catch (SQLException e) {
            
                JOptionPane.showMessageDialog(null, "Error al intentar cerrar la conexión."
                                          + "Error: "+e, "Error en la operación", 
                                          JOptionPane.ERROR_MESSAGE);
                
            }
            
        }
           
    }
    

}

}






Método del botón Modificar (jButton):
MetodosBD metodosbd = new MetodosBD();
private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {                                             

if(idcontacto.isEmpty()){
       
       JOptionPane.showMessageDialog(null, "No hay datos para modificar.\n"
                                     + "Por favor, seleccione un registro de la tabla.", "Error en la operación", 
                                     JOptionPane.ERROR_MESSAGE);
       
}else{

        metodosbd.Actualizar(txtNombrecontacto.getText(), txtApellidoscontacto.getText(), txtEmail.getText(), 
                            txtCelular.getText(), txtDireccion.getText(), cboxCiudad.getSelectedItem().toString(), 
                            idcontacto);

} 
        
        
}


VIDEO TUTORIAL (PASO A PASO)


 
Instrucciones y Recomendaciones 

NOTA: Si viste nuestro anterior artículo de JAVA, sobre cómo "Guardar registros en una base de datos", se te hará más fácil y sencillo entender el presente tema, ya que ambos códigos presentan una estructura muy similar.

1. Antes que todo, deberás copiar y pegar las siguientes librerías, las cuales son sumamente necesarias para que el código que vamos a implementar (Método Actualizar) funcione sin inconvenientes.
Recuerda pegarlas
después de la línea de código que representa el nombre del paquete (ej. package Metodos;) y sobre la línea de código que identifica el nombre de tu Clase (ej. public class MetodosBD{...):

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JOptionPane;

2. Copia y pega el código resaltado en color rosa y el de color azul, luego de la llave de apertura "{" de la Clase JAVA donde tienes los métodos de tu proyecto.
En la primera línea de código (color rosa), lo que se hace es instanciar un objeto de la Clase Pool que va a permitir conectarnos con la Base de datos, y al que hemos llamado "metodospool":
Pool metodospool = new Pool();
3. Siguiendo con el apartado de color azul, este representa la estructura de un método que nos ayudará a modificar la información almacenada en las tablas de la base de datos. En la primera parte, definimos las propiedades de nuestro método, en este caso, "public" (para que esté disponible y sea accedido desde otras Clases) y "void" (no esperamos que devuelva un valor desde su interior); a continuación, le especificamos un nombre, el cual ya sabemos que debe ir relacionado acorde a la función que llevará o ejecutará el método, por ello lo hemos llamado "Actualizar".

Lo que sigue ahora, es colocar entre paréntesis "()" los parámetros que el método necesitará para llevar a cabo el proceso de forma adecuada. Para esta oportunidad, hemos asignado 7 parámetros de tipo "String" (nombres, apellidos, email, celular, dirección, ciudad, e idcontacto), pero el número de parámetros que pases, dependerá de cuántos y cuáles campos quieres modificar en un determinado registro de la base de datos.

Hay que tener algo muy en cuenta, y es que dentro de los parámetros debe encontrarse uno que represente el campo identificador del registro a modificar; es decir, que contenga la llave y/o clave primaria. En este caso, nuestro parámetro identificador es "idcontacto".
Una vez hemos terminado de asignar los parámetros respectivos y necesarios, inmediatamente después del paréntesis de cierre ")", vamos a colocar un par de llaves, una de apertura "{", y otra de cierre "}", las cuales van a delimitar y contendrán todo el código de nuestro método "Actualizar":
 
public void Actualizar(String nombres, String apellidos, String email, String celular, 
                      String direccion, String ciudad, String idcontacto){}


4. Dentro de las llaves de nuestro método, primero vamos a crear una variable del tipo "int", y que hemos de llamar "confirmar", la cual usaremos para almacenar el valor que nos devuelve un componente "JOptionPane".
En forma más explícita, al colocar esta línea de código se le mostrará al usuario un cuadro de diálogo con el mensaje "¿Desea modificar los datos actuales?", donde podrá escoger entre tres opciones: "Sí", "No", o "Cancelar". Dependiendo de la opción cliqueada por el usuario del software, se devolverá un valor de tipo entero, el cual es el que almacenaremos en la variable "confirmar":

int confirmar = JOptionPane.showConfirmDialog(null, "¿Desea modificar los datos actuales?");


5. En el siguiente paso, vamos a establecer un condicional "if", en el cual compararemos el valor almacenado en la variable "confirmar", con la constante del componente JOptionPane "YES_OPTION", la cual representa el valor entero que se genera cuando se da clic en el botón "Sí" del cuadro de diálogo.
En pocas palabras, si el usuario del software da clic en "Sí" del cuadro de diálogo, se llevará a cabo todo lo que coloquemos dentro del condicional "if":
if(confirmar == JOptionPane.YES_OPTION){}
6. Dentro de las llaves "{}" del condicional "if", crearemos un objeto y/o variable del tipo "Connection" a la que le daremos por nombre "conexion", y le asignaremos un valor "null". Esta variable nos permitirá almacenar, gestionar, y administrar la conexión que estableceremos con nuestra base de datos:
Connection conexion = null;
7. Luego, emplearemos un bloque "try{}catch(){}finally{}". 
Dentro de las llaves "{}" del "try", haremos varias cosas:

a. Usaremos el objeto tipo "Connection", y luego del signo igual procederemos a usar el objeto "metodospool", con el cual tendremos acceso al objeto y/o variable de tipo "DataSource" de la Clase Pool que creamos en un artículo anterior, aplicándole posteriormente el método ".getConnection()"; con esto, estaremos estableciendo la conexión con la base de datos:
conexion = metodospool.dataSource.getConnection();
b. Se procederá a crear una variable del tipo "String", y que hemos de llamar "Ssql", en esta vamos a guardar la sentencia SQL que nos permitirá realizar la actualización de datos. En dicha sentencia debemos especificar los campos a modificar y el campo identificador y/o clave primaria del registro.
Si necesitas tener más clara la estructura de este tipo de sentencia, puedes leer nuestro post: "Sentencia SQL: Modificar datos de  una tabla".    

String Ssql = "UPDATE contacto SET nombres=?, apellidos=?, email=?, celular=?, direccion=?, ciudad=? "
                    + "WHERE id_contacto=?";

c. Vamos a preparar y a verificar, la sentencia SQL con la que realizaremos la actualización de información; por lo cual, crearemos una variable del tipo "PreparedStatement", y la llamaremos "prest", luego del signo igual (=) usaremos el objeto "conexion", al cual le aplicaremos el método ".prepareStatement()", a su vez a este le pasaremos como parámetro, la variable "Ssql":
PreparedStatement prest = conexion.prepareStatement(Ssql);
d. Haremos uso del objeto "prest", y le aplicaremos el método ".setString()"; sin embargo, el método a aplicar dependerá del tipo de variables que hayamos pasado como parámetros; es decir, si fueron del tipo "int", el método será ".setInt()".

Al método que hayamos aplicado debemos pasarle un par de parámetros; el primero, corresponde a un número (1, 2, 3, 4, 5, ...) que representa la posición del campo en la sentencia SQL; y el segundo, es la variable (nombres, apellidos, email, celular, dirección, ...) que almacena el valor que asignaremos al campo ubicado en la posición estipulada en el parámetro anterior:
prest.setString(1, nombres);
prest.setString(2, apellidos)
prest.setString(3, email);
prest.setString(4, celular);
prest.setString(5, direccion);
prest.setString(6, ciudad);
prest.setString(7, idcontacto);
NOTA: Las variables que usamos, son los parámetros que le hemos pasado al método "Actualizar" (ver paso 3).








e. Emplearemos un condicional "if-else", y la condición a establecer será que si al aplicarle el método ".executeUpdate()" al objeto "prest" (lo cual hará que se lleve a cabo el proceso de actualización de datos), retorna un valor mayor que "0" (cero); es decir, que se realizó la modificación de información en forma exitosa, se procederá a mostrarle al usuario del software, un cuadro de diálogo donde se le informará el éxito de la operación; en caso contrario, se mostrará un mensaje donde se le hará saber que se produjo algún error al intentar la actualización:

if(prest.executeUpdate() > 0){
        
     JOptionPane.showMessageDialog(null, "Los datos han sido modificados con éxito", "Operación Exitosa", 
                                   JOptionPane.INFORMATION_MESSAGE);
            
}else{
        
     JOptionPane.showMessageDialog(null, "No se ha podido realizar la actualización de los datos\n"
                                   + "Inténtelo nuevamente.", "Error en la operación", 
                                   JOptionPane.ERROR_MESSAGE);
        
}

Teniendo en cuenta las líneas de código de los puntos a, b, c, d, y e; la sección del "try{}" quedaría así:  

try {
    
        conexion = metodospool.dataSource.getConnection();
        
        String Ssql = "UPDATE contacto SET nombres=?, apellidos=?, email=?, celular=?, direccion=?, ciudad=? "
                    + "WHERE id_contacto="+idcontacto+"";
        
        PreparedStatement prest = conexion.prepareStatement(Ssql);
        
        prest.setString(1, nombres);
        prest.setString(2, apellidos);
        prest.setString(3, email);
        prest.setString(4, celular);
        prest.setString(5, direccion);
        prest.setString(6, ciudad);
        
        if(prest.executeUpdate() > 0){
        
            JOptionPane.showMessageDialog(null, "Los datos han sido modificados con éxito", "Operación Exitosa", 
                                          JOptionPane.INFORMATION_MESSAGE);
            
        }else{
        
            JOptionPane.showMessageDialog(null, "No se ha podido realizar la actualización de los datos\n"
                                          + "Inténtelo nuevamente.", "Error en la operación", 
                                          JOptionPane.ERROR_MESSAGE);
        
        }
        
    }   

8. En la parte del "catch(){}", dentro de los paréntesis "()" establecemos el tipo de excepción que puede producirse (SQLException), y la almacenaremos y/o capturaremos en una variable llamada "e".
Ahora, dentro de las llaves de apertura "{" y de cierre "}", haremos uso del componente "JOptionPane.showMessageDialog", esto con el fin de mostrarle al usuario a través de un pequeño cuadro de diálogo, el error que se ha producido, lo que llevó a que no se actualizaran los datos:

} catch (SQLException e) {
    
    JOptionPane.showMessageDialog(null, "No se ha podido realizar la actualización de los datos\n"
                                  + "Inténtelo nuevamente.\n"
                                  + "Error: "+e, "Error en la operación", 
                                  JOptionPane.ERROR_MESSAGE);
    
}    

9. En la última sección del "método Actualizar", vemos la parte del "finally{}", dentro de sus llaves utilizamos un condicional "if", en el cual comprobaremos si la conexión con la base de datos no es nula (null); en tal caso, se procederá a ejecutar lo que hemos establecido dentro del "if", y que básicamente consiste en un bloque "try{}catch(){}"

Dentro del "try{}", usamos el objeto "conexion", a este le estableceremos el método ".close()" con el fin de cerrar y/o liberar la conexión que se utilizó para realizar la actualización en la base de datos; luego, en la parte del "catch(){}", establecemos el tipo de excepción (SQLException) y la capturamos en una variable llamada "e"; posteriormente, dentro de las llaves del "catch", vamos a usar un componente "JOptionPane.showMessageDialog", y cuando se produzca una excepción o error, se le informará al usuario del software, a través de una pequeña ventanita (cuadro de diálogo):

}finally{
    
        if(conexion!=null){
        
            try {
                
                conexion.close();
            
            } catch (SQLException e) {
            
                JOptionPane.showMessageDialog(null, "Error al intentar cerrar la conexión."
                                          + "Error: "+e, "Error en la operación", 
                                          JOptionPane.ERROR_MESSAGE);
                
            }
            
        }
           
}

10. Debes dirigirte a tu formulario (donde está el botón modificar), y ubicarte en la parte del código; luego, procederás a copiar y pegar la línea de código resaltada con color lila, después de la llave de apertura "{" de la Clase de tu JFrame. 
Básicamente, lo que se hace es instanciar un objeto de la Clase donde creamos el método Actualizar, a dicho objeto lo hemos llamado "metodosbd":
MetodosBD metodosbd = new MetodosBD();
11. Ubicado allí en tu formulario, deberás establecerle un evento al botón (del tipo ActionEvent), más exactamente el método "actionPerformed()", y posteriormente copiarás y pegarás dentro de este, el código resaltado de color verde
En este fragmento de código procedemos a implementar un condicional "if-else", y en la condición verificaremos que una variable (String) de nuestro formulario, la cual hemos llamado "idcontacto", esté vacía (para ello usamos el método ".isEmpty()").
Dicha variable contiene el identificador y/o clave primaria del registro que hemos de actualizar; por lo cual, con anterioridad se debió haber hecho el proceso de consultar información en la base de datos desde nuestro formulario y haber seleccionado un registro determinado.

En el caso de que se cumpla la condición, se le mostrará al usuario del software, un cuadro de diálogo informándole de que no hay ningún registro seleccionado para modificar. En caso contrario, usaremos el objeto "metodosbd", y llamaremos a nuestro método "Actualizar"; seguidamente, debemos pasarle los parámetros respectivos, en este caso debemos capturar el contenido de los campos de nuestro formulario:

if(idcontacto.isEmpty()){
       
       JOptionPane.showMessageDialog(null, "No hay datos para modificar.\n"
                                     + "Por favor, seleccione un registro de la tabla.", "Error en la operación", 
                                     JOptionPane.ERROR_MESSAGE);
       
}else{

        metodosbd.Actualizar(txtNombrecontacto.getText(), txtApellidoscontacto.getText(), txtEmail.getText(), 
                            txtCelular.getText(), txtDireccion.getText(), cboxCiudad.getSelectedItem().toString(), 
                            idcontacto);

}
 
NOTA: Debemos tener cuidado a la hora de pasar los parámetros, ya que deben coincidir con el mismo orden de las variables de nuestro método (ver paso 3); es decir, que si el primer parámetro original de nuestro método es la variable "nombres", debemos colocar en ese primer lugar, la captura del contenido del JTextField donde se muestran los nombres (ej. txtNombrecontacto.getText()).








12. Ahora sólo basta con ejecutar tu proyecto y hacer las respectivas pruebas:


Botón (JButton) Modificar.
Botón Modificar

¿Quieres aprender más de JAVA?
Si deseas saber cómo modificar registros de una base de datos, pero de forma netamente gráfica usando NetBeans IDE, o ver otros temas muy interesantes, no te olvides de revisar los tips de JAVAseguir el Curso: Cómo lo hago en JAVA?

Accede a todos los fragmentos de código que hemos publicado en este lenguaje hasta el momento, dando clic en el siguiente enlace: Ver listado de códigos JAVA.

Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, y Google+.

¿Conoces una forma más óptima de realizar el anterior procedimiento?, no dudes en compartir tu conocimiento con todos nuestros amigos de la web.

Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos y en las redes sociales.
Si tienes dudas o sugerencias al respecto, abajo puedes dejarnos tus comentarios.
Bendiciones...





Comparte este código


14 comentarios:

  1. Hola amigo el if final if(idcontacto.isEmpty()){

    JOptionPane.showMessageDialog(null, "No hay datos para modificar.\n"
    + "Por favor, seleccione un registro de la tabla.", "Error en la operación",
    JOptionPane.ERROR_MESSAGE);

    }else{

    metodosbd.Actualizar(txtNombrecontacto.getText(), txtApellidoscontacto.getText(), txtEmail.getText(),
    txtCelular.getText(), txtDireccion.getText(), cboxCiudad.getSelectedItem().toString(),
    idcontacto);

    }

    me lanza error en idcontacto... claro yo lo puse con mi variable

    ResponderBorrar
    Respuestas
    1. Saludos estimado visitante.
      A qué tipo de error te refieres?
      Debes tener en cuenta el tipo de variable que manejas, ya que por ejemplo; en este caso, "idcontacto" es de tipo "String", y tal vez la tuya sea de tipo "int"; y en la parte del "if" le estamos aplicando el método "isEmpty()" el cual no podrás usar si tu variable es "int". Igualmente debes tener en cuenta que en el método "Modificar" la variable "idcontacto" también es de tipo "String".

      Cualquier duda me comentas.

      Bendiciones...

      Borrar
  2. Con esta cadena actualizo y modifico en java con mysql

    String sSQL = "";
    conectate mysql = new conectate();
    Connection cn = mysql.getConnection();
    String Id, nom, prov, pre , cant;
    Id= txtid.getText();
    nom= nombre.getText();
    prov= proveedor.getText();
    pre= precio.getText();
    cant= cantidad.getText();

    sSQL = "UPDATE producto " +
    "SET nombre = ?," +
    "proveedor = ?," +
    "precio = ?," +
    "cantidad = ?," +
    "WHERE id = "+id_actualizar;
    /** id_actualizar es una variable de clase y se implementa en el metodo BuscarEditar(String id) donde toma el valor del parametro de dicho metodo*/
    String mensaje = "Los datos se han Modoficado de Manera Satisfactoria...";

    try
    {
    PreparedStatement pst = cn.prepareStatement(sSQL);// con esta sentencia se insertan los datos en la base de datos
    pst.setString(1, Id);
    pst.setString(2, nom);
    pst.setString(3, prov);
    pst.setString(4, pre);
    pst.setString(5, cant);
    int n = pst.executeUpdate();//valida si se guardaron los datos; si pst>0 entonces se guardaron

    if(n > 0)
    {
    JOptionPane.showMessageDialog(null, mensaje);
    CargarTabla("");//l momento de agregar un nuevo registro, actualiza la tabla
    }
    }
    catch (SQLException ex)
    {
    JOptionPane.showMessageDialog(null, ex);
    }

    ResponderBorrar
  3. hola te consulto.. estoy intentando hacer una tabla en la cual se puede mosdificar un dato de cada registro, como puedo hacer para modificarlo??
    ejemplo: tengo que modificar la diposibilidad de los productos con un "si" o un "no".
    se pueden modificar mas de uno a la vez.
    espero me puedas ayudar. muchas gracias y saludos!

    ResponderBorrar
    Respuestas
    1. Saludos estimado Cuba García, en tu JTable puedes crear una Columna llamada "Disponible" (o como quieras llamarla) y que sea de cajas de chequeo (CheckBox), puedes ver cómo hacerlo dando CLIC AQUÍ.
      Para que puedas modificar más de un registro a la vez, deberás llamar a tu método modificar dentro de un ciclo for, a través del cual recorrerás todos los registros de tu JTable.

      Cualquier duda me comentas.

      ¡CRISTO ES TU PROVEEDOR!

      Bendiciones...

      Borrar
  4. Hola como puedo seleccionar los datos de la tabala y le de click en el boton modificar se abra otra ventana y los pueda cambiar

    ResponderBorrar
    Respuestas
    1. Saludo Cordial.

      Estimado Marcos Samaniego, para poder llevar a cabo lo que tú necesitas realizar, te regalo el siguiente link:
      http://codigosparadesarrolladores.blogspot.com.co/2015/02/codigo-java-seleccionar-registro-de-un-jtable-y-mostrarlo-en-los-campos-de-un-formulario.html

      Allí encontrarás un post donde se explica el código para seleccionar y pasar los datos de un registro de una tabla a los campos del mismo formulario donde se encuentra el JTable, ya sólo deberás hacer unas cuantas modificaciones ya que tú quieres mostrarlos en un formulario diferente.

      Si tienes algún inconveniente a la hora de realizar la implementación del código, no dudes en dejar tu comentario.

      ¡CRISTO TE AMA!

      Bendiciones...

      Borrar
  5. Voy a mostrar como hago yo para actualizar datos de una tabla a otra con JDBC.
    El ejemplo que voy a usar es actualizar los datos de partidos de futbol de un tabla donde tengo los datos a la otra donde los necesito rellenar.

    public void actualizarDatos() {
    //Datos de la conexion
    String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    String DB_URL = "jdbc:mysql://localhost/test";
    String USER = "";
    String PASS = "";

    Connection conn;
    Statement stmt = null;
    ResultSet rs = null;

    PreparedStatement preparedStatement = null;

    try {
    //Conexion
    conn = DriverManager.getConnection(DB_URL, USER, PASS);

    stmt = conn.createStatement();

    String query = "select j.ID_EQUIPO as equipo, goles, dp.ID_PARTIDO as partido
    + " from detallepartido dp, jugador j"
    + " where dp.ID_JUGADOR = j.ID_JUGADOR
    + " group by dp.ID_PARTIDO, j.ID_EQUIPO";
    rs = stmt.executeQuery(query);

    //Actualizando datos
    while(rs.next()){
    String updateTableSQL = "UPDATE partido SET goles_equipo_local = ? WHERE id_equipo_local = ? and id_partido = ?";
    preparedStatement = conn.prepareStatement(updateTableSQL);

    preparedStatement.setInt(1, rs.getInt("goles"));
    preparedStatement.setInt(2, rs.getInt("equipo"));
    preparedStatement.setInt(3, rs.getInt("partido"));
    preparedStatement .executeUpdate();

    updateTableSQL = "UPDATE partido SET goles_equipo_visitante = ? WHERE id_equipo_visitante = ? and id_partido = ?";
    preparedStatement = conn.prepareStatement(updateTableSQL);

    preparedStatement.setInt(1, rs.getInt("goles"));
    preparedStatement.setInt(2, rs.getInt("equipo"));
    preparedStatement.setInt(3, rs.getInt("partido"));
    preparedStatement .executeUpdate();
    }

    //Cerramos
    rs.close();
    preparedStatement.close();
    stmt.close();
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }

    }

    ResponderBorrar
  6. Hola, e intentado hacer un jButton pueda descontar del stock de productos de mi base de dato y al mismo tiempo si no hay stock me envie, con un JOptionPane, un mensaje que diga "no hay stock", pero no me resulta... alguna idea como hacerlo?

    ResponderBorrar