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...
me sirve gracias aunque me suelta un error de que la base de datos no devuelve nada
ResponderEliminarEn 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.....
ResponderEliminarme fue util tu ejemplo. Gracias
ResponderEliminarMuy bueno... sencillo y practico.
ResponderEliminarGracias
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..
ResponderEliminarBueno, 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...
EliminarSaludos.
Muchas gracias pot tu ejemplo. Me sirvió de mucho en un proyecto.
ResponderEliminarmm alguien sabe por que me marca error en JOptionPane
ResponderEliminary donde dice SQLException
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.
EliminarLa Clase, contiene un método main, por lo tanto peuder correr el archivo y veras el ejemplo completo
Hola! Cuando creo un usuario siempre me dice que esta repetido a pesar de que no haya ninguno, y no se guarda. Que hago?
ResponderEliminarHola, cambia esta linea:JOptionPane.showMessageDialog(null,"El usuario ya existe"); , por esta: JOptionPane.showMessageDialog(null, e.getMessage());
EliminarDe 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...
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?
EliminarSon 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.
EliminarHola! Cuando creo un usuario siempre me dice que esta repetido a pesar de que no haya ninguno, y no se guarda. Que hago?
ResponderEliminarBuenas tardes guardar usuario en que parte va??????
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarbuenas me esta marcando error en el .getText, a que se debe eso? pueden ayudarme?
ResponderEliminarHola, 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.
Eliminarespero te ayude mi respuesta.
Este comentario ha sido eliminado por el autor.
ResponderEliminarAmigo, ¿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)
ResponderEliminarSería de gran ayuda cualquier respuesta.... Disculpa por llenar esto de tanto código jejeje... Estaré atento.