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: Borrar información de una base de datos


Código JAVA anterior: 
Obtener el valor máximo y mínimo de un array (vector).
-------------------------------------------------------------------------------------------
Este post está orientado a la aplicación e implementación de un fragmento de código JAVA, que nos permitirá eliminar registros almacenados en una tabla de la base de datos; lo cual, ayudará a que se mantenga la integridad de la información, ya que estaremos quitando todos esos datos que no son de utilidad:

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

public void Eliminar(String idcontacto, String valor, String filtro, JTable tablacontactos){
    
 
int confirmar = JOptionPane.showConfirmDialog(null, "Esta seguro que desea eliminar el registro?");


if(JOptionPane.OK_OPTION==confirmar) { 
   
   Connection conexion = null;
 
 try { 
        conexion = metodospool.dataSource.getConnection();
        String Ssql = "DELETE FROM contacto "
                    + "WHERE id_contacto = ?";
        
        PreparedStatement prest = conexion.prepareStatement(Ssql); 
         
        prest.setString(1, idcontacto);

 
        if(prest.executeUpdate()>0){
            
                JOptionPane.showMessageDialog(null, "El registro ha sido eliminado exitosamente", 
                                              "Operación Exitosa", JOptionPane.INFORMATION_MESSAGE);
                            
                //Opcional
                Buscar(valor, filtro, tablacontactos); 
                Limpiar();
         }else{
            
                JOptionPane.showMessageDialog(null, "No se ha podido eliminar el registro\n"
                + "Inténtelo nuevamente.", "Error en la operación", 
                JOptionPane.ERROR_MESSAGE);

        }

   } catch(SQLException error){
       
       JOptionPane.showMessageDialog(null, "No se ha podido eliminar el registro\n Inténtelo nuevamente.\n"
                                    + "Error: "+error, "Error en la operación", JOptionPane.ERROR_MESSAGE);
        
   }finally{
   
        
        if(conexion!=null){
        
            try {
                     
                 conexion.close();
            
            } catch (SQLException error2) {
                 
                     JOptionPane.showMessageDialog(null, "Error al intentar cerrar la conexión.\n Error: "+error2, 
                                                   "Error en la operación", JOptionPane.ERROR_MESSAGE);
                 
            }
            
        }       
   
   
   }


}


}


Método del botón Eliminar (jButton):
MetodosBD metodosbd = new MetodosBD();
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {                                            
       
   if(idcontacto.isEmpty()){
       
       JOptionPane.showMessageDialog(null, "No hay datos para eliminar.\n"
       + "Por favor, seleccione un registro de la tabla.", "Error en la operación", JOptionPane.ERROR_MESSAGE);
       
   }else{

        metodosbd.Eliminar(idcontacto, txtValorbusqueda.getText(), cboxFiltro.getSelectedItem().toString(), tblDatos);

   } 
 
}                                           



Instrucciones y Recomendaciones 

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 Eliminar) 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;
import javax.swing.JTable;




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 permite la conexión 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 eliminar registros almacenados 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 "Eliminar".

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 4 parámetros; 3 de tipo "String" (idcontacto, valor, filtro); y 1 de tipo "JTable" (tablacontactos).

Dentro de los parámetros hay uno que es el principal, y es el que representa al campo identificador del registro a eliminar; es decir, que contendrá la llave y/o clave primaria. En este caso, nuestro parámetro identificador es "idcontacto".

Los otros 3 parámetros (valor, filtro, y tablacontactos), en esta oportunidad, no son necesarios para realizar el proceso de eliminación; sin embargo, los hemos colocado porque los usaremos para poder implementar otro método que nos permitirá complementar el proceso de borrado.  

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 "Eliminar":
 
public void Eliminar(String idcontacto, String valor, String filtro, JTable tablacontactos){}


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 "¿Está seguro que desea eliminar el registro?", 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, "Está seguro que desea eliminar el registro?");



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 procederá a ejecutar el código 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 el nombre de "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 eliminación de datos. En dicha sentencia debemos especificar el campo identificador y/o clave primaria del registro que vamos a eliminar.
Si necesitas tener más clara la estructura de este tipo de sentencia, puedes leer nuestro post: "Sentencia SQL: Eliminar registros de una tabla".    

String Ssql = "DELETE FROM contacto WHERE id_contacto = ?";

c. Vamos a preparar y a verificar la sentencia SQL, con la que realizaremos el borrado de datos; 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()".
A dicho método, debemos pasarle un par de parámetros; el primero, corresponde a un número (1) que representa la posición del campo en la sentencia SQL; y el segundo, es la variable (idcontacto) que almacena el valor que asignaremos al campo ubicado en la posición estipulada en el parámetro anterior:
prest.setString(1, idcontacto);
NOTA: La variable "idcontacto" que usamos, es la que se encuentra entre los parámetros que le hemos pasado al método "Eliminar" (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 eliminación de datos), retorna un valor mayor que "0" (cero); es decir, que se realizó la eliminació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 el borrado de datos:

if(prest.executeUpdate()>0){
            
                JOptionPane.showMessageDialog(null, "El registro ha sido eliminado exitosamente", 
                                              "Operación Exitosa", JOptionPane.INFORMATION_MESSAGE);
                         
                //Opcional
                Buscar(valor, filtro, tablacontactos); 
                Limpiar();  
}else{
            
               JOptionPane.showMessageDialog(null, "No se ha podido eliminar el registro\n"
               + "Inténtelo nuevamente.", "Error en la operación", 
               JOptionPane.ERROR_MESSAGE);

}


NOTA: Dentro del "if", podemos observar que hemos puesto un comentario "//Opcional", sobre dos líneas de código; ya que en realidad, no son necesarias o indispensables en el proceso de eliminación; es decir, que si quieres, no las uses. Estas líneas, representan dos métodos; el primero, es el método "Buscar()" (Ver explicación del método), el cual nos permitirá actualizar el JTable de nuestro formulario, una vez se elimine el registro seleccionado, ya que si no se hace esto, dicho registro seguirá apareciendo en la tabla del formulario, así se haya eliminado de la base de datos. Podemos además, ver que los otros 3 parámetros que le pasamos al método eliminar, son para usarlos aquí en el método "Buscar()"; esto quiere decir, que si no vas a implementar el método "Buscar()" en tu código, entonces, al método "Eliminar", sólo deberás pasarle un parámetro; es decir, "idcontacto". El segundo método llamado "Limpiar()" (Ver código de ejemplo), cumple un papel similar al método anterior, sólo que este se ocupará de borrar o como su nombre lo indica, limpiar todos los demás componentes del formulario (JTextField, Combo Box, Variables, etc.); en otras palabras, dejar el formulario sin ningún rastro de información correspondiente al registro que se ha eliminado.

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 = "DELETE FROM contacto "
                    + "WHERE id_contacto = ?";
        
        PreparedStatement prest = conexion.prepareStatement(Ssql);          
        prest.setString(1, idcontacto);

        if(prest.executeUpdate()>0){
            
                JOptionPane.showMessageDialog(null, "El registro ha sido eliminado exitosamente", 
                                              "Operación Exitosa", JOptionPane.INFORMATION_MESSAGE);
                            
                //Opcional
                Buscar(valor, filtro, tablacontactos);   
Limpiar();   
 
 }else{
            
               JOptionPane.showMessageDialog(null, "No se ha podido eliminar el registro\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 "error".
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; es decir, la causa que llevó a que no se eliminaran los datos:

} catch(SQLException error){
       
       JOptionPane.showMessageDialog(null, "No se ha podido eliminar el registro\n Inténtelo nuevamente.\n"
                                    + "Error: "+error, "Error en la operación", JOptionPane.ERROR_MESSAGE);
        
}   

9. En la última sección del "método Eliminar", 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 eliminación de registros 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 "error2"; 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 error2) {
            
                JOptionPane.showMessageDialog(null, "Error al intentar cerrar la conexión."
                                          + "Error: "+error2, "Error en la operación", 
                                          JOptionPane.ERROR_MESSAGE);
                
            }
            
        }
           
}

10. Debes dirigirte a tu formulario (donde está el botón eliminar), 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 Eliminar, 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 eliminar; por lo cual, con anterioridad se debió haber hecho el proceso de buscar 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 eliminar. En caso contrario (else), usaremos el objeto "metodosbd", y llamaremos a nuestro método "Eliminar"; seguidamente, debemos pasarle los parámetros respectivos:

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

        metodosbd.Eliminar(idcontacto, txtValorbusqueda.getText(), cboxFiltro.getSelectedItem().toString(), tblDatos);

   } 

 
NOTA: Debemos tener cuidado a la hora de pasar los parámetros, ya que deben de 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 "idcontacto", debemos colocar en ese primer lugar, la variable de nuestro formulario que la representa (ej. idcontacto).

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

Clic en el botón "Eliminar".
"Botón Eliminar"


¿Quieres aprender más de JAVA?
Si deseas saber cómo eliminar 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


11 comentarios:

  1. calFecha.getCalendar().toString(), es correcto poner eso ayudame por fa

    ResponderEliminar
    Respuestas
    1. Saludos estimado amigo, si lo que estás intentando es capturar la fecha de un JCalendar, debes usar el método ".getDate();".

      ¡CRISTO TE AMA!

      Bendiciones...

      Eliminar
  2. Disculpa un pregunta ese idcontacto que es un txtfield o una tabla por que cuando coloco el codigo en el boton me sale error

    ResponderEliminar
    Respuestas
    1. Saludos estimado Carlos.
      idcontacto es una variable String, la cual representa en este caso un valor de una llave primaria de la tabla de tu base de datos; es decir, cuando coloques el código que va en el método del botón, debes reemplazar idcontacto por un valor String, el cual puedes capturar desde un JTextField, un JTable, etc..

      Cualquier duda me comentas.

      ¡CRISTO TE AMA!

      Bendiciones...

      Eliminar
  3. Mi boton borrar con base de datos

    String dbName = "/DerbyDB/ExampleDB";
    String connectionURL = "jdbc:derby:" + dbName;
    Connection conn = null;

    try{
    Class.forName(driver);
    } catch(java.lang.ClassNotFoundException e) {
    e.printStackTrace();
    }

    try {
    conn = DriverManager.getConnection(connectionURL);

    Statement st = conn.createStatement();

    // borra un usuario en concreto
    st.execute("DELETE * FROM users WHERE idUser='101'");

    // borra todos los usuarios
    st.execute("DELETE * FROM users");

    // borra la tabla users
    st.execute("DELETE TABLE users");

    } catch (Throwable e) {
    System.out.println("Ha fallado el borrado de datos");
    e.printStackTrace();
    } finally {
    try { conn.close(); }
    catch (Throwable t){}
    }

    ResponderEliminar
  4. buenas.. y como hago para eliminar un registro que tiene el id "01" y al borrarlo el "02" lo reemplace.

    ResponderEliminar
    Respuestas
    1. Saludos estimado Cuba Garcia.

      En este caso según entiendo, lo que deseas es cambiar el valor del campo "id" y dejar los demás datos de dicho registro intactos.
      Si es así, entonces lo que debes es proceder a modificar (no eliminar) dicho valor; sin embargo, si en tu base de datos dicho campo es llave foránea en otras tablas, deberás configurar la característica "ON UPDATE" de dicha llave foránea en "CASCADE".

      Te regalo los siguientes links donde podrás aclarar tus dudas:

      ¿Cómo modificar información en una base de datos desde JAVA?
      -> CLIC AQUÍ

      ¿Cómo relacionar tablas en bases de datos? (Llaves foráneas)
      -> CLIC AQUÍ

      Cualquier duda me comentas.

      ¡CRISTO TE AMA!

      Bendiciones...

      Eliminar
  5. Disculpa amigo Bastidas aplique el método eliminar y me da un error com.MySQL.jdbc.exeption.jdbc4.mysqlSynt.... si me puedes ayudar

    ResponderEliminar
    Respuestas
    1. Saludos estimado.

      Regálame el error completo para poder colaborarte.

      Bendiciones...

      Eliminar
  6. Hola una pregunta como hago para eliminar datos de una base de datos dada una condición de antemano muchas gracias

    ResponderEliminar
    Respuestas
    1. Saludos estimado(a), para eliminar datos específicos de una base de datos teniendo como referencia una condición, deberás configurar tu sentencia SQL de tal modo que uses el condicional WHERE.
      Para que te quede un poco más claro te invito a que visites el siguiente link:
      -> Sentencia SQL: Eliminar registros de una tabla

      ¡CRISTO TE AMA!
      ¡ÉL VIVE!

      Bendiciones...

      Eliminar