Base de Datos + Netbeans + MySQL (Proyecto Completo)
Nuestro proyecto de Base de Datos llamado "Contactos", esta completo o mas o menos
completo, el codigo contiene las funciones basicas que debe tener un proyecto de Base de
Datos, añade nuevos registros, los elimina y tambien puede modificar esos registros.
El mini tutorial esta compuesto de 8 capitulos.
1.
Clase conexion Base de Datos
2.
Probando la clase conectate.java
3.
Sentencias SQL en Netbeans
4.
Leer base de datos en Netbeans
5.
Interfaz y Base de Datos con Netbeans
6.
Agregar Registros a Base de Datos
7.
Eliminar Registros de la Base de Datos
8.
Actualizar la Base de Datos
El proyecto.
- Nuestra base de datos se llama "DBContactos" en MySQL
- Contiene una única tabla llamada "Persona"
El proyecto contiene las clases:
conectate.java : encargada de conectarse con la base de datos
tablaform.java: es la interfaz grafica en si
Ademas tambien se añadieron las clases:
mipanel.java
degradadoclass.java
Ambas clases encargadas de añadir imagenes y colores a la interfaz grafica, para hacer de
el proyecto final un poco mas agradable a la vista. estas clases no tienen nada que ver con
la base de datos.
Esta es nuestra interfaz final
El codigo fuente [Enlace actualizado]
Clase Conexion a Base de Datos
JAN29
Post Info
Cuando se trabaja con base de datos en java, lo mejor para tener un trabajo controlado,
limpio y que sea facil de mantener, es hacer uso de una clase exclusiva para la conexion.
Esta "clase java" que coloco en este post me a servido mucho para realizar algunos
trabajos en java sin muchos dolores de cabeza, la clase se llama "conectate.java", y el uso
es bastante sencillo. Si trabajas con mysql, lo unico que debes modificar es el "paquete"
donde lo usaras, el nombre de la base de datos, usuario y password
package PAQUETE_QUE_USARA_ESTA_CLASE ; import java.sql.*;
/**
* @web http://jc-mouse.blogspot.com/ * @author Mouse
*/
public class conectate {
static String bd = "NOMBRE_BASE_DE_DATOS"; static String login = "USUARIO";
static String password = "PASSWORD";
static String url = "jdbc:mysql://localhost/"+bd;
Connection conn = null;
public conectate() { try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url,login,password); if (conn!=null){
System.out.println("Conección a base de datos "+bd+". listo");
}
}catch(SQLException e){ System.out.println(e);
}catch(ClassNotFoundException e){ System.out.println(e);
} }
public Connection getConnection(){ return conn;
public void desconectar(){ conn = null;
} }
Debo aclarar que el codigo no es mio, no coloco la fuente, porque me olvide la web de
donde lo obtuve, esta clase la tenia guardada hace tiempo en mi pc y ahora que se me
presento un trabajo de java con base de datos, la saque de la carpeta de los recuerdos y
estuve recordando un poco el lenguaje.
Probando la clase "conectate.java"
JAN29
Post Info
Mouse
en 12:17
0 comentarios
Permalink
Para probar la clase "conectate.java", creada en "Clase conexion a base de datos", que nos
permite conectarnos a una base de datos de MySQL, creamos un nuevo proyecto en
Netbeans con el nombre "contactos".
Antes, me olvidaba, tenemos que tener creada la base de datos, la cual llame
"dbcontactos", si no sabes como crear la base de datos pasate por aqui, en esa base de
datos creamos una tabla llamada "persona".
muy bien, ahora para probar que la conexion en verdad funciona, creamos una clase y la
llamamos "persona.java", en esta clase colocamos el siguiente codigo:
package contactos; /**
* @web http://jc-mouse.blogspot.com/ * @author mouse
*/
conectate con;
public persona (){
con = new conectate(); }
}
Ahora en el Main.java, colocamos el siguiente codigo:
package contactos; /**
* @web http://jc-mouse.blogspot.com/ * @author Mouse
*/
public class Main {
public static void main(String[] args) { persona p = new persona();
p.con.desconectar(); }
}
Ya solo nos queda ejecutar el proyecto (F6) y listo.
El proyecto completo
Sentencia SQL en netbeans
JAN29
Post Info
Continuando con el post "Probando la clase conectate.java", ahora daremos una nueva
funcionalidad a nuestra clase "persona.java", que es la de añadir nuevos registros a
nuestra tabla "persona".
Modificaremos la clase "persona.java" con el siguiente codigo:
package contactos; import java.sql.*; /**
* @web http://jc-mouse.blogspot.com/ * @author mouse
*/
public class persona { conectate con;
public persona (){
con = new conectate(); }
/*Añade un nuevo registro*/
public void NuevaPersona(String name, String ap, String am, String mail){
try {
PreparedStatement pstm =
con.getConnection().prepareStatement("insert into " +
"persona(Nombre, appPaterno, appMaterno, mail) " + " values(?,?,?,?)");
pstm.setString(1, name); pstm.setString(2, ap);
pstm.setString(3, am); pstm.setString(4, mail); pstm.execute();
pstm.close(); }catch(SQLException e){ System.out.println(e); }
} }
Tambien añadiremos nuevas lineas de codigo a Main.java:
package contactos; /**
* @web http://jc-mouse.blogspot.com/ * @author Mouse
*/
public class Main {
public static void main(String[] args) { persona p = new persona();
p.con.desconectar(); }
}
ejecutamos nuevamente el proyecto (F6) y tenenmos el nuevo registro añadido a nuestra
tabla
Leer base de datos con netbeans
JAN29
Post Info
Mouse
en 07:33
3 comentarios
Permalink
Ahora que pudimos manipular la base de datos con la "insercion" de nuevos registros,
ahora necesitamos extraer esos registros para poder verlos, modificaremos la clase
"persona.java" para añadir la funcion "getDatos()".
Nuestra clase Persona.java que da de esta forma:
import java.sql.*; /**
* @web http://jc-mouse.blogspot.com/ * @author mouse
*/
public class persona { conectate con;
public persona (){
con = new conectate(); }
/*Añade un nuevo registro*/
public void NuevaPersona(String name, String ap, String am, String mail){
try {
PreparedStatement pstm =
con.getConnection().prepareStatement("insert into " +
"persona(Nombre, appPaterno, appMaterno, mail) " + " values(?,?,?,?)"); pstm.setString(1, name); pstm.setString(2, ap); pstm.setString(3, am); pstm.setString(4, mail); pstm.execute(); pstm.close(); }catch(SQLException e){ System.out.println(e); } }
/*obtenemos todos los datos de la tabla*/ public Object [][] getDatos(){
int x = 0;
//obtenemos la cantidad de registros existentes en la tabla try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT count(1) as total FROM persona ");
ResultSet res = pstm.executeQuery(); res.next();
x = res.getInt("total"); res.close();
}catch(SQLException e){ System.out.println(e); }
Object[][] s = new String[x][2];
//realizamos la consulta sql y llenamos los datos en "Object" try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT " + " id, Nombre " +
" FROM persona" + " ORDER BY id ");
while(res.next()){
String estCodigo = res.getString("id"); String estNombre = res.getString("nombre"); s[i][0] = estCodigo;
s[i][1] = estNombre; i++;
}
res.close();
}catch(SQLException e){ System.out.println(e); }
return s; }
}
La nueva funcion GetDatos() esta definida como Object [][], tambien podemos definirla
como String[][], la funcion esta dividida en dos partes, la primera encargada de realizar una
consulta para conocer el numero de registros existentes y gurdarla en la variable "registros",
la segunda parte de la funcion utilizando la variable "registros" crea un objeto con esas
dimensiones y realiza la consulta para extraer los datos y colocarlas en la variable "data[]
[]" que es la que retorna.
el codigo del Main, debe quedar asi:
package contactos; /**
* @web http://jc-mouse.blogspot.com/ * @author Mouse
*/
public class Main {
public static void main(String[] args) { persona p = new persona(); Object [][] sc ;
sc = p.getDatos();
for(int i=0;i<sc.length ;i++){
System.out.println("> " + sc[i][0] + " - " + sc[i] [1]);
}
p.con.desconectar(); }
}
El proyecto completo
Agregar registros a base de datos con netbeans
JAN29
Post Info
Mouse
en 18:24
2 comentarios
Permalink
Continuando con nuestro mini-proyecto, ahora llego la hora de agregar/eliminar/actualizar
registros a la base de datos de forma visual.
Nuestro proyecto se llama "contactos", las clases que utilizamos son conectate.java y
persona.java, la base de datos (dbcontactos) y tabla (persona) que usamos las puedes ver
aqui.
Clase persona.java
package contactos; import java.sql.*; /**
* @web http://jc-mouse.blogspot.com/ * @author mouse
*/
public class persona { conectate con;
public persona (){
con = new conectate(); }
/*Añade un nuevo registro*/
public void NuevaPersona(String name, String ap, String am, String mail){
try {
PreparedStatement pstm =
con.getConnection().prepareStatement("insert into " +
"persona(Nombre, appPaterno, appMaterno, mail) " + " values(?,?,?,?)");
pstm.setString(1, name); pstm.setString(2, ap);
pstm.setString(3, am); pstm.setString(4, mail); pstm.execute();
} }
/*obtenemos todos los datos de la tabla*/ public Object [][] getDatos(){
int registros = 0;
//obtenemos la cantidad de registros existentes en la tabla try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT count(1) as total FROM persona ");
ResultSet res = pstm.executeQuery(); res.next();
registros = res.getInt("total"); res.close();
}catch(SQLException e){ System.out.println(e); }
Object[][] data = new String[registros][5];
//realizamos la consulta sql y llenamos los datos en "Object" try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT " +
" id, Nombre, appPaterno, appMaterno, mail " + " FROM persona" +
" ORDER BY id ");
ResultSet res = pstm.executeQuery(); int i = 0;
while(res.next()){
String estCodigo = res.getString("id"); String estNombre = res.getString("nombre"); String estpaterno = res.getString("appPaterno"); String estmaterno = res.getString("appMaterno"); String estmail = res.getString("mail");
data[i][0] = estCodigo; data[i][1] = estNombre; data[i][2] = estpaterno; data[i][3] = estmaterno; data[i][4] = estmail; i++; } res.close(); }catch(SQLException e){ System.out.println(e); } return data; } }
Empezemos:
Nos dirigimos a Source (su codigo) y realizaremos lo siguiente;
Paso 2: declara import javax.swing.table.DefaultTableModel; ya sabes donde
Paso 3: coloca estas lineas de codigo.
/**
* @param args the command line arguments */
persona p= new persona(); Object[][] dtPer;
int fila = -1;
Paso 4: Añade estos dos metodos, el primero updateTabla(), actualiza el objeto tabla cada
vez que se lo invoca, el metodo nuevo(), su funcion es la de limpiar los jTextFields para
añadir nuevos datos.
private void updateTabla(){
String[] columNames = {"id","Nombre","ap. Paterno","ap. Materno", "E-Mail"};
// se utiliza la funcion dtPer = p.getDatos();
// se colocan los datos en la tabla DefaultTableModel datos = new
DefaultTableModel(dtPer,columNames); tabla.setModel(datos);
}
private void nuevo(){ txtname.setText(""); txtpaterno.setText(""); txtmaterno.setText("");
Paso 5: añade el evento WindowOpenend al jFrame, el evento ActionPerformed a los
objetos jButton y el evento MouseClicked al objeto jTable, añade el codigo que se ve abajo
private void formWindowOpened(java.awt.event.WindowEvent evt) {
updateTabla(); nuevo();
}
private void cmdRegistroActionPerformed(java.awt.event.ActionEvent evt) {
String name = txtname.getText(); String pat = txtpaterno.getText();
String mat = txtmaterno.getText(); String mail = txtmail.getText();
p.NuevaPersona(name, mat, pat, mail); updateTabla();
}
private void cmdNuevoActionPerformed(java.awt.event.ActionEvent evt) {
nuevo(); }
private void tablaMouseClicked(java.awt.event.MouseEvent evt) { fila = tabla.rowAtPoint(evt.getPoint()); if (fila > -1){
txtname.setText(String.valueOf(tabla.getValueAt(fila, 1))); txtpaterno.setText(String.valueOf(tabla.getValueAt(fila, 2)));
txtmaterno.setText(String.valueOf(tabla.getValueAt(fila, 3)));
txtmail.setText(String.valueOf(tabla.getValueAt(fila, 4))); }
}
El proyecto completo
Interfaz y base de datos con netbeans
JAN29
Post Info
Mouse
en 12:17
6 comentarios
Permalink
Trabajando con las base de datos y extrayendo los datos para su uso con java en post
anteriores, ahora necesitamos crear una interfaz de usuario para poder interactuar de una
Comenzaremos por ahora solo con mostrar los datos que sacamos de la base de datos
MySql, poco a poco se ira perfecconando la aplicacion para tener al final un proyecto
bastante complejo y bastante completo.
Paso1 :
Con el proyecto abierto (contactos) crearemos un nuevo jFrame al que llamaremos
"tablaform", a esta nueva ventana le añadiremos los controles JPanel y JTable como se ve
en la imagen
al objeto JTable renombraremos a "tabla", la distribucion de los objetos debe quedar asi:
Paso 2:
Modificaremos la clase "persona.java", mas concretamente la funcion "getDatos()", los
cambios que hicimos fueron para poder leer todos los datos de nuestra tabla
public Object [][] getDatos(){ int registros = 0;
//obtenemos la cantidad de registros existentes en la tabla try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT count(1) as total FROM persona ");
ResultSet res = pstm.executeQuery(); res.next();
registros = res.getInt("total"); res.close();
}catch(SQLException e){ System.out.println(e); }
//realizamos la consulta sql y llenamos los datos en "Object" try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT " +
" id, Nombre, appPaterno, appMaterno, mail " + " FROM persona" +
" ORDER BY id ");
ResultSet res = pstm.executeQuery(); int i = 0;
while(res.next()){
String estCodigo = res.getString("id"); String estNombre = res.getString("nombre"); String estpaterno = res.getString("appPaterno"); String estmaterno = res.getString("appMaterno"); String estmail = res.getString("mail");
data[i][0] = estCodigo; data[i][1] = estNombre; data[i][2] = estpaterno; data[i][3] = estmaterno; data[i][4] = estmail; i++;
}
res.close();
}catch(SQLException e){ System.out.println(e); }
return data; }
Paso 3:
a nuestro "tablaform", le añadimos "import javax.swing.table.DefaultTableModel;", al
jframe le aññadimos la funcion WindowOpened y colocaremos el siguiente codigo:
private void formWindowOpened(java.awt.event.WindowEvent evt) { //objeto para almacenar datos
Object[][] dtPer;
String[] columNames = {"id","Nombre","ap. Paterno","ap. Materno", "E-Mail"};
// se utiliza la funcion dtPer = p.getDatos();
// se colocan los datos en la tabla DefaultTableModel datos = new
DefaultTableModel(dtPer,columNames); tabla.setModel(datos);
}
El proyecto compl
Agregar registros a base de datos con netbeans
JAN29
Post Info
Mouse
en 18:24
2 comentarios
Permalink
Continuando con nuestro mini-proyecto, ahora llego la hora de agregar/eliminar/actualizar
registros a la base de datos de forma visual.
Nuestro proyecto se llama "contactos", las clases que utilizamos son conectate.java y
persona.java, la base de datos (dbcontactos) y tabla (persona) que usamos las puedes ver
aqui.
Clase persona.java
package contactos; import java.sql.*; /**
* @web http://jc-mouse.blogspot.com/ * @author mouse
*/
public class persona { conectate con;
public persona (){
/*Añade un nuevo registro*/
public void NuevaPersona(String name, String ap, String am, String mail){
try {
PreparedStatement pstm =
con.getConnection().prepareStatement("insert into " +
"persona(Nombre, appPaterno, appMaterno, mail) " + " values(?,?,?,?)"); pstm.setString(1, name); pstm.setString(2, ap); pstm.setString(3, am); pstm.setString(4, mail); pstm.execute(); pstm.close(); }catch(SQLException e){ System.out.println(e); } }
/*obtenemos todos los datos de la tabla*/ public Object [][] getDatos(){
int registros = 0;
//obtenemos la cantidad de registros existentes en la tabla try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT count(1) as total FROM persona ");
ResultSet res = pstm.executeQuery(); res.next();
registros = res.getInt("total"); res.close();
}catch(SQLException e){ System.out.println(e); }
Object[][] data = new String[registros][5];
//realizamos la consulta sql y llenamos los datos en "Object" try{
PreparedStatement pstm =
con.getConnection().prepareStatement("SELECT " +
" id, Nombre, appPaterno, appMaterno, mail " + " FROM persona" +
" ORDER BY id ");
ResultSet res = pstm.executeQuery(); int i = 0;
while(res.next()){
String estCodigo = res.getString("id"); String estNombre = res.getString("nombre"); String estpaterno = res.getString("appPaterno"); String estmaterno = res.getString("appMaterno"); String estmail = res.getString("mail");
i++; }
res.close();
}catch(SQLException e){ System.out.println(e); }
return data; }
}
Empezemos:
Paso 1: crea un jFrame "tablaform" y coloca los siguientes controles, renombralos como
se ve en la imagen de abajo. ¡cuidado con las mayusculas y minusculas!
Nos dirigimos a Source (su codigo) y realizaremos lo siguiente;
Paso 2: declara import javax.swing.table.DefaultTableModel; ya sabes donde
Paso 3: coloca estas lineas de codigo.
/**
* @param args the command line arguments */
persona p= new persona(); Object[][] dtPer;
int fila = -1;
Paso 4: Añade estos dos metodos, el primero updateTabla(), actualiza el objeto tabla cada
vez que se lo invoca, el metodo nuevo(), su funcion es la de limpiar los jTextFields para
añadir nuevos datos.
String[] columNames = {"id","Nombre","ap. Paterno","ap. Materno", "E-Mail"};
// se utiliza la funcion dtPer = p.getDatos();
// se colocan los datos en la tabla DefaultTableModel datos = new
DefaultTableModel(dtPer,columNames); tabla.setModel(datos);
}
private void nuevo(){ txtname.setText(""); txtpaterno.setText(""); txtmaterno.setText("");
txtmail.setText("tu_correo@hotmail"); }
Paso 5: añade el evento WindowOpenend al jFrame, el evento ActionPerformed a los
objetos jButton y el evento MouseClicked al objeto jTable, añade el codigo que se ve abajo
private void formWindowOpened(java.awt.event.WindowEvent evt) {
updateTabla(); nuevo();
}
private void cmdRegistroActionPerformed(java.awt.event.ActionEvent evt) {
String name = txtname.getText(); String pat = txtpaterno.getText();
String mat = txtmaterno.getText(); String mail = txtmail.getText();
p.NuevaPersona(name, mat, pat, mail); updateTabla();
}
private void cmdNuevoActionPerformed(java.awt.event.ActionEvent evt) {
nuevo(); }
private void tablaMouseClicked(java.awt.event.MouseEvent evt) { fila = tabla.rowAtPoint(evt.getPoint()); if (fila > -1){
txtname.setText(String.valueOf(tabla.getValueAt(fila, 1))); txtpaterno.setText(String.valueOf(tabla.getValueAt(fila, 2)));
txtmaterno.setText(String.valueOf(tabla.getValueAt(fila, 3)));
txtmail.setText(String.valueOf(tabla.getValueAt(fila, 4))); }
}
El proyecto completo
Eliminar/Borrar registros de base de datos con netbeans
JAN29
Post Info
Mouse
en 15:26
3 comentarios
Permalink
Le añadiremos una nueva funcionalidad a nuestro proyecto base de datos y netbeans, esta
funcionalidad es la de poder eliminar registros de la base de datos, todo de una forma visual
y sencilla.
Recordemos un poco, nuestro proyecto se llama "contactos", las clases que utilizamos son
conectate.java y persona.java, la base de datos (dbcontactos) y contiene una tabla
(persona) puedes ver con mas detalle nuestra base de datos aqui.
Añadiremos un nuevo jButton al proyecto, lo llamaremos "cmdEliminar", nuestra
interfaz debe quedar de esta forma.
Para poder eliminar un registro de la base de datos realizaremos una instruccion SQL con el
comando DELETE, para ello debemos tener muy en cuenta la conformacion de nuestra
tabla "Persona".
En la clase persona.java, añadiremos la nueva funcion deletePersona(), dentro la cual
colocaremos la instruccion SQL, ejecutaremos la sentencia y cerramos.
public void deletePersona(String cod){ try {
PreparedStatement pstm =
con.getConnection().prepareStatement("delete from persona where id = ?");
pstm.setString(1, cod); pstm.execute();
pstm.close(); }catch(SQLException e){
System.out.println(e); }
}
Ahora en el JFrame correspondiente, al boton que creamos "cmdEliminar", le añadimos el
evento ActionPerformded, copias el siguiente codigo.
private void cmdEliminarActionPerformed(java.awt.event.ActionEvent evt) { if (fila > -1){
String codigo = String.valueOf(tabla.getValueAt(fila, 0));
p.deletePersona(codigo); updateTabla();
fila=-1; }
Este código lo que hace es revisar si la variable "fila" contiene un valor diferente a
"-1",esto sucede cuando se realiza un clic sobre el objeto "tabla", si esto es cierto, quiere
decir que tenemos una fila seleccionada, por lo tanto procedera a extraer el codigo
correspondiente y con este codigo hara un llamado a deletePersona(codigo), elimina el
registro y reinicia el valor de fila a -1 para evitar inconvenientes.
El proyecto completo
Actualizar/update registros de la base de datos con netbeans
JAN29
Post Info
Mouse
en 16:15
3 comentarios
Permalink
Una ultima funcionalidad que le falta a nuestro miniproyecto de base de datos, es la de
poder "modificar" los datos leidos de la base de datos, para despues poder guardar esos
cambios, para ello:
- Añadimos un nuevo jButton a nuestro proyecto.
- En nuestra clase, persona.java añadimos el codigo:
public void updatePersona(String id, String name, String paterno, String materno, String mail){
try {
PreparedStatement pstm =
con.getConnection().prepareStatement("update persona " + "set Nombre = ? ," +
"appPaterno = ? ," +
"appMaterno = ? ," + "mail = ? " +
"where id = ? ");
pstm.setString(3, materno); pstm.setString(4, mail);
pstm.setString(5, String.valueOf(id)); pstm.execute();
pstm.close(); }catch(SQLException e){ System.out.println(e); }
}
Explicacion: Esta nueva funcion, recibe como parametros el "id" codigo del registro que
se modificara, ademas de los datos necesarios para realizar la consulta, como el nombre,
apellido paterno , materno y el mail de la persona. Luego se realiza una consulta SQL
pasando
esos
datos.
Ya en el jFrame de nuestro proyecto, al nuebo jButton que creamos, añadimos el siguiente
codigo:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (fila > -1){
String codigo = String.valueOf(tabla.getValueAt(fila, 0)); String name = txtname.getText();
String pat = txtpaterno.getText();
String mat = txtmaterno.getText(); String mail = txtmail.getText();
p.updatePersona(codigo, name, pat, mat, mail); updateTabla();
}
}