Ir al contenido principal

Guardar datos en Postgre desde Java



Saludos amigos en esta oportunidad estableceremos conexion con postgre, para realizar la insercion de datos, primero que todo crearemos las variables de la conexion:


String driver = "org.postgresql.Driver";
String ruta = "jdbc:postgresql://localhost:5432/nombre de la bd";
String user = "postgres";
String password = "clave";


Importante: El driver de Postgre para Java lo puedes descargar desde aqui: Driver PostgreSQL
para explicar algo que es fundamental sobre la base de datos Ejemplo es que esta tiene tres (3) campos que son:
codusuarios: de tipo biginteger serial (lo quiere decir que es un campo auto incremento en postgre).
nombre: de tipo text.
identificacion: de tipo text.

Ahora seguimos con el codigo para insertar datos.

Esta es la funcion correspondiente:

 public void GuardarUsuario(String nombre, String identificacion){

        // Insertar datos a la bd:
         try{
            Class.forName(driver);
            Connection conne=(Connection) DriverManager.getConnection(ruta,user,password);
            Statement consulta=(Statement) conne.createStatement();
            consulta.executeUpdate("insert into usuarios(nombre, identificacion) values('"+nombre+"','"+identificacion+"')");

         } catch(SQLException e){
            JOptionPane.showMessageDialog(null,"El usuario ya existe");

        } catch(ClassNotFoundException e){
            JOptionPane.showMessageDialog(null,"Error inesperado");
    }
}

La función la debes colocar en la parte publica del documento así:









 La forma de llamar esta funcion desde el botón es la siguiente:

private void JButton1 ActionPerformed(java.awt.event.ActionEvent evt) {

Guardarusuario(JTextField1.getText, JTextField2.getText);

}


Donde JTextField1.getText corresponde al nombre y JTextField2.getText corresponde al número de identificación.

Al final dentro del visor de datos de postgre podemos ver los datos:



Clase del ejemplo y Backup de la Base de datos:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testdatabase;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 *
 * @author jeison
 */
public class processOgr {

    static String driver = "org.postgresql.Driver";
    static String ruta = "jdbc:postgresql://localhost:5432/NOMBREBD";
    static String user = "postgres";
    static String password = "CLAVE";

    public static void saveUser(JTextField name, JTextField identification) {
        try {
            Class.forName(driver);
            Connection conne = (Connection) DriverManager.getConnection(ruta, user, password);
            Statement consulta = (Statement) conne.createStatement();
            consulta.executeUpdate("insert into users(name, identification) values('" + name.getText() + "','" + identification.getText() + "')");
            name.setText(null);
            identification.setText(null);
        } catch (SQLException | ClassNotFoundException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        /* Window */
        JFrame frame = new JFrame("Guardar usuario");
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());
        JLabel lName = new JLabel("Nombre");
        final JTextField name = new JTextField(10);
        JLabel lId = new JLabel("Identificación");
        final JTextField id = new JTextField(10);
        JButton button = new JButton();
        button.setText("Guardar");

        panel.add(lName);
        panel.add(name);
        panel.add(lId);
        panel.add(id);
        panel.add(button);

        frame.add(panel);
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        //Add action listener to button
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                //Execute when button is pressed
                 saveUser(name, id);
            }
        });

    }
}

Espero que les sea de ayuda...

Deja tu comentario o agradecimiento...



Comentarios

  1. me sirve gracias aunque me suelta un error de que la base de datos no devuelve nada

    ResponderEliminar
  2. En estos momentos acabo de implementar la funcion completa en la entrada y la forma de llamarla ahora con respecto al error que dices que te presenta puede ser por las variables nombre y identificacion ya que depronto tenian como valor null.....

    ResponderEliminar
  3. me fue util tu ejemplo. Gracias

    ResponderEliminar
  4. Muy bueno... sencillo y practico.
    Gracias

    ResponderEliminar
  5. men tengo un problema me sale cada vez que quiero guardar que el usuario ya existeee.. y no guardaa.. a que crees que se deba?.. lo raro es que no se estan repitiendo los datos en la base de datos..

    ResponderEliminar
    Respuestas
    1. Bueno, ese error se debe a error en la sentecia SQL como por ejemplo un nombre de un campo o en las palabras reservadas de la sentencia misma, pero hay una excepción a esto que te acabo de decir y es cuando creas restriciones en la base de datos como PrimariKey o Unique debes revisar estos aspectos...

      Saludos.

      Eliminar
  6. Muchas gracias pot tu ejemplo. Me sirvió de mucho en un proyecto.

    ResponderEliminar
  7. mm alguien sabe por que me marca error en JOptionPane
    y donde dice SQLException

    ResponderEliminar
    Respuestas
    1. Hola Acabo de adicionar la clase completa del ejemplo y el backup de la base de datos postgreSQL esta en formato PLAIN .sql, la puedes restaurar desde pgAdminIII o por consola.
      La Clase, contiene un método main, por lo tanto peuder correr el archivo y veras el ejemplo completo

      Eliminar
  8. Hola! Cuando creo un usuario siempre me dice que esta repetido a pesar de que no haya ninguno, y no se guarda. Que hago?

    ResponderEliminar
    Respuestas
    1. Hola, cambia esta linea:JOptionPane.showMessageDialog(null,"El usuario ya existe"); , por esta: JOptionPane.showMessageDialog(null, e.getMessage());

      De esta forma te darás cuenta el error exacto, pero creo que no se esta conectando correctamente a la Base de datos..

      Espero te funcione...

      Eliminar
    2. Cuando dices: ("insert into users(name, identification) values('" + name.getText() + "','" + identification.getText() + "')"); las variables (name,identification) son parte de la tabla de la base de datos?

      Eliminar
    3. Son los campos de la base de datos 'users' las variables con las que estan entre los signos más y corresponden al contedido d elas cajas de texto.

      Eliminar
  9. Hola! Cuando creo un usuario siempre me dice que esta repetido a pesar de que no haya ninguno, y no se guarda. Que hago?

    ResponderEliminar
  10. Buenas tardes guardar usuario en que parte va??????

    ResponderEliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. buenas me esta marcando error en el .getText, a que se debe eso? pueden ayudarme?

    ResponderEliminar
    Respuestas
    1. Hola, ese error puede ser que el campo no tiene el mismo nombre es decir, esos nombres que yo coloque como: identificacion, name... son por ejemplo JTextFiel1, JtextArea1... es decir verifica que el nombre corresponda porque el error es que no reconoce ese metodo getText en ese componente.

      espero te ayude mi respuesta.

      Eliminar
  13. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  14. Amigo, ¿cómo hago para llamar una secuencia de mi tabla (codrecarga) en un campo jtextfield de netbeans llamado codigo?. Quiero que al darle click en el boton nuevo, automaticamente me traiga el NEXTVAL de mi tabla(codrecarga) y me lo asigne a mi jtextfield (codigo)


    Sería de gran ayuda cualquier respuesta.... Disculpa por llenar esto de tanto código jejeje... Estaré atento.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Fireworks CS3 portable

Para que hagas los logos, botones e imagenes para tus aplicaciones facil y rapido... ¿Qué es Fireworks? Adobe Fireworks es una aplicación en forma de estudio (basada en la forma de estudio de Adobe Flash ), pero con más parecido a un taller destinado para el manejo híbrido de gráficos vectoriales con Gráficos en mapa de bits y que ofrece un ambiente eficiente tanto para la creación rápida de prototipos de sitios Web e interfaces de usuario, como para la creación y Optimización de Imágenes para web. Originalmente fue desarrollado por Macromedia , compañía que fue comprada en 2005 por Adobe Systems . Fireworks está disponible de forma individual o integrado en Adobe CS3/CS4/CS5 y por tanto ha sido diseñado para integrarse con otros productos de Adobe, como Dreamweaver y Flash . Integración con Adobe Flash La integración con Adobe Flash se ha ido reduciendo paulatinamente desde que Flash, en su versión 7, integró la herramienta PolyStar que hace un polígono

Pasar de una ventana a otra en java

Hola a todos en esta oportunidad estamos postiando algo que cuando empezamos con java es muy necesario y es como pasar de una ventana a otra, ya sea JDialog o JFrame; creados en tiempo de ejecucion o en aplicaciones de escritorio: Para llamar a un JDialog:        JDialog1 dialogo = new JDialog1 ( this , true );        dialogo . show (); y para cerrar un JDialogo de una plicacion de escritorio se puede utilizar:        dispose (); Para llamar a un JFrame:        JFrame1 frame = new JFrame1 ();        frame . show (); Para cerrar un JFrame de una plicacion de escritorio:                 dispose ();   o tambien: System. exit (0); y si se contruye a partir de la clase JFrame se coloca el siguiente codigo en la parte publica del documento:       setDefaultCloseOperation ( EXIT_ON_CLOSE ); Espero los siguientes ejemplos les sean de mucha ayuda... Deja tu comentario o agradecimiento.