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: Guardar registros en una base de datos


Código JAVA anterior: 
Cortar cadena de caracteres en varias partes.
-------------------------------------------------------------------------------------------
Este artículo está orientado a la aplicación e implementación de un método JAVA, que nos permitirá insertar registros en una base de datos; en este caso los datos serán tomados directamente desde los distintos campos (JTextField, JComboBox, etc...) que hacen parte de uno de los formularios que integran nuestro sistema hecho en Java:

Clase Java (MetodosBD.java):
package Metodos;

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

public class MetodosBD {
    
Pool metodospool = new Pool();
    
public int Guardar(String nombres, String apellidos, String email, String celular, 
                   String direccion, String sexo){

int resultado = 0;

Connection con = null;

String SSQL = "INSERT INTO contacto (nombres, apellidos, email, celular, direccion, sexo) "
            + "VALUES (?, ?, ?, ?, ?, ?)";


    try {
    
        con = metodospool.dataSource.getConnection();
        
        PreparedStatement psql = con.prepareStatement(SSQL);
        psql.setString(1, nombres);
        psql.setString(2, apellidos);
        psql.setString(3, email);
        psql.setString(4, celular);
        psql.setString(5, direccion);
        psql.setString(6, sexo);
        
        resultado = psql.executeUpdate();
        
        psql.close();
                    
    } catch (SQLException e) {
    
        JOptionPane.showMessageDialog(null, "Error al intentar almacenar la información:\n"
                                     + e, "Error en la operación", JOptionPane.ERROR_MESSAGE);
        
    }finally{
    
        try {
            
            if(con!=null){
            
                con.close();
                
            }
            
        } catch (SQLException ex) {
        
            JOptionPane.showMessageDialog(null, "Error al intentar cerrar la conexión:\n"
                                     + ex, "Error en la operación", JOptionPane.ERROR_MESSAGE);
            
        }
    
    }

    return resultado;
    
}    
    
    
    
}
      


Método del botón Guardar:
private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                           
       
  MetodosBD metodosbd = new MetodosBD();
        
  int exito =  metodosbd.Guardar(txtNombrecontacto.getText(), txtApellidoscontacto.getText(), 
               txtEmail.getText(), txtCelular.getText(), txtDireccion.getText(), 
               cboxSexo.getSelectedItem().toString());
        
  if(exito>0){

    JOptionPane.showMessageDialog(null, "Los datos se han guardado correctamente", 
                                  "Éxito en la operación", JOptionPane.INFORMATION_MESSAGE);

  }else{

    JOptionPane.showMessageDialog(null, "Los datos no se pudieron guardar\n"
                                 + "Inténtelo nuevamente", "Error en la operación", JOptionPane.ERROR_MESSAGE); 
  
  }
 

VIDEO TUTORIAL (PASO A PASO)


 
Instrucciones y Recomendaciones 

1-Crea una Clase Java en tu proyecto, en este caso la hemos llamado "MetodosBD". Copia y pega el código resaltado en verde después de la línea de código que representa el nombre del paquete (package Metodos;) y sobre la línea de código que identifica el nombre de tu Clase (public class MetodosBD...), este fragmento de código se utiliza para importar las clases y/o librerías necesarias para poder trabajar con ciertas funcionalidades y métodos de nuestra Clase:
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 azul dentro de las llaves de apertura "{" y de cierre "}", de la Clase que has creado.

3-En la primera línea, procedemos a instanciar un objeto de la clase que nos permite conectarnos con nuestra base de datos usando un Pool de conexiones, en este caso nuestro objeto ha sido llamado "metodospool":
Pool metodospool = new Pool();
4-Seguidamente, crearemos nuestro método que permitirá guardar y/o almacenar información en nuestra base de datos
Primero que todo, lo que llevaremos a cabo será establecer las propiedades del método, en este caso son: "public" (establece al método como público, permitiéndonos acceder y/o llamarlo desde otra Clase) y adicionalmente "int" (determina que el método retornará un valor de tipo entero). Ahora, le asignamos un nombre a dicho método, para esta ocasión es "Guardar", seguido le colocamos los paréntesis de apertura "(" y de cierre ")", y dentro de estos procedemos a crear los parámetros (nombres, apellidos, email, celular, direccion, sexo) que aceptará dicho método, con su respectivo tipo de dato "String"; en otras palabras, estos parámetros representan los datos consignados en cada campo de un formulario de nuestra aplicación JAVA.
Luego, vamos a fijar las llaves de apertura "{" y la de cierre "}", las cuales contendrán el código del método en cuestión:

public int Guardar(String nombres, String apellidos, String email, String celular, 
                   String direccion, String sexo){}
      

5-Dentro del método creado anteriormente (punto 4), procederemos a crear una variable de tipo "int", la cual llamaremos "resultado" y la inicializaremos con un valor de "0" (cero)
Luego, creamos un objeto y/o variable del tipo "Connection", cuyo nombre será "con" y le asignaremos un valor "null".
Teniendo en cuenta cada parte del código, este fragmento quedaría de la siguiente forma:
int resultado = 0;

Connection con = null;
6-Ahora, crearemos una variable del tipo "String" y la llamaremos "SSQL", en esta variable definiremos la sentencia SQL que nos va a permitir realizar la inserción de datos en una tabla de la base de datos.
Podemos ver en la parte final de la sentencia, que hay una serie de signos de interrogación de cierre (?), debemos establecer el mismo número de signos de acuerdo al número de campos de la tabla en la que deseamos guardar datos; es decir, si hemos colocado 4 campos de la tabla, debemos establecer 4 signos (?).
Si deseas tener una explicación detallada de la sentencia SQL necesaria para guardar registros en la tabla de una base de datos, haz clic aquí:

String SSQL = "INSERT INTO contacto (nombres, apellidos, email, celular, direccion, sexo) "
            + "VALUES (?, ?, ?, ?, ?, ?)";
 
7-Estableceremos un bloque "try-catch-finally"; ya que los procedimientos y/o líneas de código a ejecutar, podrían producir excepciones y/o errores:
try {

} catch (SQLException e) {

}finally{

}
8-Usaremos el objeto tipo "Connection" que creamos anteriormente (punto 5), y luego del signo igual; llamaremos al objeto "metodospool" (punto 3) y a través del cual accederemos a la variable tipo "DataSource" de la Clase "Pool"; aplicaremos seguidamente el método ".getConnection()".
Lo que hemos hecho, es establecer y administrar una conexión con la base de datos:
con = metodospool.dataSource.getConnection();
9-Vamos a preparar y/o compilar la sentencia SQL que hemos de enviar y de ejecutar para guardar los registros en la base de datos; para ello, crearemos un objeto de tipo "PreparedStatement", y lo llamamos "psql"; luego, procedemos a llamar al objeto "con" al cual le aplicaremos el método ".preparedStatement()", a dicho método hemos de pasarle un parámetro, que en este caso consiste en la variable que contiene la sentencia SQL; es decir, "SSQL" (punto 6):
PreparedStatement psql = con.prepareStatement(SSQL);
10-Usaremos el objeto PreparedStatement "psql", y luego llamaremos al método ".setString()" al cual le pasaremos 2 parámetros, el primero será un valor entero; por ejemplo 1 (uno), que identificará la posición de uno de los valores (VALUES) en nuestra sentencia SQL, en este caso sería el valor número uno; el segundo parámetro, hará referencia a la variable (ej. nombres) que contendrá el valor que queremos asignarle valga la redundancia al valor especificado; es decir, al número uno en esta ocasión. Las variables que estamos usando (nombres, apellidos, email, celular, dirección, y sexo), no son más que los parámetros que acepta el método guardar (ver punto 4).
En otras palabras, lo que aquí hacemos es determinar y/o asignar un valor específico para cada signo de interrogación (?) que hemos establecido en la sentencia SQL, es por ello que esta operación se repite 6 veces en este caso, ya que son 6 valores (6 signos de interrogación).
Deberás usar el método correspondiente dependiendo de los valores que acepten los campos de tu tabla, en esta oportunidad sólo empleamos ".setString()", pero tu podrás usar otros métodos tales como: ".setInt()", ".setDate()", etc.; todo dependerá del tipo de datos a guardar:
psql.setString(1, nombres);
psql.setString(2, apellidos);
psql.setString(3, email);
psql.setString(4, celular);
psql.setString(5, direccion);
psql.setString(6, sexo);
11-Teniendo en cuenta nuevamente al objeto PreparedStatement "psql", le aplicaremos el método ".executeUpdate()"; esto nos permitirá enviar y ejecutar en la base de datos, la sentencia SQL que hemos creado, pero con los valores que hemos asignado en el punto anterior (punto 10); es decir, con esto ya estaremos realizando el proceso de almacenamiento de datos en nuestra tabla. Este proceso devolverá un valor del tipo int (entero), el cual almacenaremos en nuestra variable "resultado":
resultado = psql.executeUpdate();








12-Aplicaremos al objeto PreparedStatement "psql", el método ".close()"; con lo que estaremos liberando los recursos usados para realizar el proceso de almacenamiento de datos:
psql.close();
13-Dentro de las llaves del bloque "catch(){}" (punto 7), procederemos a emplear un elemento "JOptionPane" mediante el cual mostraremos al usuario que no se ha podido llevar a cabo el proceso de almacenamiento de datos.
Puedes observar que se pasan 4 parámetros; el primero de ellos lo dejamos "null"; el segundo, es el mensaje que se va a mostrar al usuario y en el cual usamos la variable "e" que es en la que se captura la excepción producida; el tercer parámetro, es el título del cuadro de diálogo; y por último, usamos la constante "ERROR_MESSAGE" de la Clase JOptionPane, lo que nos va a permitir visualizar un icono de error en el mensaje que se muestra en pantalla:

JOptionPane.showMessageDialog(null, "Error al intentar almacenar la información:\n"
                                     + e, "Error en la operación", JOptionPane.ERROR_MESSAGE);
                 

14-Nos ubicaremos entre las llaves del bloque "finally{}", y allí posteriormente procederemos a crear un bloque "try{}catch(){}". 
Dentro del bloque "try{}" usaremos un condicional del tipo "if", allí verificaremos que si nuestra conexión con la base de datos ha sido exitosa, procederemos a aplicarle el método ".close()" al objeto "con"; esto con el fin de liberar dicha conexión para que pueda ser usada por otro proceso y/o usuario del sistema.
Ahora, en la parte del "catch(){}" mostraremos un cuadro de diálogo avisando que hubo un problema al intentar cerrar y/o liberar la conexión, para ello haremos uso del elemento JOptionPane como en el punto anterior (punto 13):


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

15-Haremos uso de la palabra clave y/o expresión "return" sobre nuestra variable "resultado"; esto nos permitirá informarle y devolverle al método, el valor que actualmente contiene dicha variable:
return resultado;
16-Copia y pega el código resaltado en amarillo, dentro del método del "botón guardar" de tu formulario. 
Para que no tengas inconvenientes con la implementación del código, deberás importar las librerías necesarias, en este caso:
import javax.swing.JOptionPane;
import Metodos.MetodosBD;
Ten presente que estas líneas de código deben ir ubicadas, debajo de la línea que define el nombre del paquete (package Formularios;), y por encima de la línea que define el nombre de nuestra Clase (public class Formulario...).

17-Lo primero que hacemos, es instanciar un objeto de la Clase Java donde hemos creado nuestro "método Guardar"; a dicho objeto le pondremos un nombre, en este caso "metodosbd":
MetodosBD metodosbd = new MetodosBD();
18-Empleamos el objeto instanciado, y seguidamente llamamos al método ".Guardar()", al cual deberemos pasarle los parámetros respectivos. En este caso, lo que estamos haciendo es capturar los valores digitados en cada componente (JTextField, JComboBox, etc.) del formulario actual.
Como lo mencionamos en el punto 4 del presente post, cuando establecimos las características del método "Guardar", indicamos que este devolvería un valor del tipo int, por ello usamos una variable de este mismo tipo a la cual hemos llamado "exito", y en donde capturaremos y/o almacenaremos dicho valor devuelto por el método:

int exito =  metodosbd.Guardar(txtNombrecontacto.getText(), txtApellidoscontacto.getText(), 
               txtEmail.getText(), txtCelular.getText(), txtDireccion.getText(), 
               cboxSexo.getSelectedItem().toString());

19-Aplicaremos un condicional del tipo "if(){}else{}", y dependiendo del valor que hayamos capturado en la variable "exito", mostraremos al usuario un cuadro de diálogo, informándole si se pudo o no llevar a cabo el registro de los datos:

if(exito>0){

    JOptionPane.showMessageDialog(null, "Los datos se han guardado correctamente", 
                                  "Éxito en la operación", JOptionPane.INFORMATION_MESSAGE);

}else{

    JOptionPane.showMessageDialog(null, "Los datos no se pudieron guardar\n"
                                 + "Inténtelo nuevamente", "Error en la operación", JOptionPane.ERROR_MESSAGE); 
  
}








20- Ahora sólo basta con ejecutar tu proyecto y hacer las respectivas pruebas.
 
Nota: 
Si deseas ver cómo llevar a cabo la implementación de este y otros códigos más, usando un IDE como NetBeans, no olvides seguir el Curso de Java: Cómo lo hago en JAVA?

¿Quieres hacer otras cosas 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; puedes dejarnos tus comentarios.
Bendiciones...





Comparte este código


7 comentarios:

  1. Muchas gracias por el contenido, me sirvio mucho

    Saludos

    ResponderBorrar
  2. Se utiliza mucho lo que OOB objetos y creo que es la forma mas sencilla de hacerlo con este codigo puedes insertar lo que es BD de mysql

    MetodosBD metodosbd = new MetodosBD();

    int exito = metodosbd.Guardar(txtNombrecontacto.getText(), txtApellidoscontacto.getText(),
    txtEmail.getText(), txtCelular.getText(), txtDireccion.getText(),
    cboxSexo.getSelectedItem().toString());

    if(exito>0){

    JOptionPane.showMessageDialog(null, "Los datos se han guardado correctamente",
    "Éxito en la operación", JOptionPane.INFORMATION_MESSAGE);

    }else{

    JOptionPane.showMessageDialog(null, "Los datos no se pudieron guardar\n"
    + "Inténtelo nuevamente", "Error en la operación", JOptionPane.ERROR_MESSAGE);

    }

    ResponderBorrar
  3. El contenido esta muy bueno pero me da error al implementar Pool metodospool = new Pool();donde dice que POOL es abstracto y no puede ser instanciado.
    Podrías orientarme en eso por favor?

    ResponderBorrar
  4. Muchas gracias la verdad me fue de suma utilidad, y gracias por el salmo que pusiste al inicio del vídeo

    ResponderBorrar
  5. hola
    tengo este error al momento de guardar los datos en la base de datos desde la interfaz q cree en javanetbeans
    jul 03, 2020 2:50:36 PM Formularios.Principal btnGuardarActionPerformed
    GRAVE: null
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'td,documento,nombre,apellido,telefono,direccion,fecha_ing,hora_ing,motivo VAL...' at line 1

    ResponderBorrar
  6. y este es el codigo q tengo dentro del boton guardar
    ConexionBD Con = new ConexionBD();
    Con.ConectarBD();
    String td = cbTD.getSelectedItem().toString();
    String doc = txtDocumento.getText();
    String nom = txtNombres.getText();
    String ape = txtApellidos.getText();
    String tel = txtTelefono.getText();
    String dir = txtDireccion.getText();
    String fi = txtFechaI.getText();
    String hi = txtHoraI.getText();
    String mot = txtMotivo.getText();
    if (!doc.isEmpty()){
    if (!nom.isEmpty()) {
    if (!ape.isEmpty()) {
    if (!tel.isEmpty()) {
    if (!dir.isEmpty()) {
    if (!fi.isEmpty()) {
    if (!hi.isEmpty()) {
    if (!mot.isEmpty()) {
    try {
    String SQL = "INSERT INTO personas "
    + "td,documento,nombre,apellido,telefono,direccion,fecha_ing,hora_ing,motivo"
    + " VALUES "
    + "('"+td+"','"+doc+"','"+nom+"','"+ape+"','"+tel+"','"+dir+"','"+fi+"','"+hi+"','"+mot+"');";
    Con.sentencia.execute(SQL);
    JOptionPane.showMessageDialog(null, "¡Los datos fueron guardados con éxito!");
    } catch (SQLException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor digite el motivo de ingreso");
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor digite la hora de ingreso ");
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor digite la fecha de ingreso ");
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor ingrese la dirección");
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor ingrese el telefono");
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor ingrese el apellido");
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor ingrese el nombre");
    }
    } else {
    JOptionPane.showMessageDialog(null, "Por favor ingrese el documento");
    }
    Con.DesconectarBD();

    }

    ResponderBorrar
  7. Me pueden a ayudar con la clase almacenar de un móvil por favor

    ResponderBorrar