Base de Datos Sistemas

29
http://jc-mouse.blogspot.com/2009/12/base-de-datos-netbeans-mysql- proyecto.html http://es.slideshare.net/sistemasddm/java-netbeans http://programasvariox.blogspot.com/2010_12_01_archive.html http://www.videogameall.net/CLjayJhRsyQ/Netbeans-Access-Base-de- Datos-Java-Video-4-Parte-1-2 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.

description

Base Datos Sistema

Transcript of Base de Datos Sistemas

http://jc-mouse.blogspot.com/2009/12/base-de-datos-netbeans-mysql-proyecto.htmlhttp://es.slideshare.net/sistemasddm/java-netbeanshttp://programasvariox.blogspot.com/2010_12_01_archive.htmlhttp://www.videogameall.net/CLjayJhRsyQ/Netbeans-Access-Base-de-Datos-Java-Video-4-Parte-1-2

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, aade nuevos registros, los elimina y tambien puede modificar esos registros.

El mini tutorial esta compuesto de 8 capitulos.

1. Clase conexion Base de Datos2. Probando la clase conectate.java3. Sentencias SQL en Netbeans4. Leer base de datos en Netbeans5. Interfaz y Base de Datos con Netbeans6. Agregar Registros a Base de Datos7. Eliminar Registros de la Base de Datos8. 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 persona.java: esta clase contiene todas las funciones encargadas de manipular la base de datos tablaform.java: es la interfaz grafica en si

Ademas tambien se aadieron las clases:

mipanel.java degradadoclass.javaAmbas clases encargadas de aadir 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

Clase Conexion a Base de Datos

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("Coneccin 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"Para probar la clase"conectate.java", creada en "Clase conexion a base de datos", que nos permite conectarnos a una base de datos deMySQL, 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 poraqui, 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*/public class persona {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.

Sentencia SQL en netbeansJAN29Post Info Mouse en12:36 1 comentarios PermalinkContinuando con el post "Probando la clase conectate.java", ahora daremos una nueva funcionalidad a nuestra clase"persona.java", que es la de aadir 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();} /*Aade 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 aadiremos 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.NuevaPersona("Fulanito", "Menganito", "Zutanito", "[email protected]");p.con.desconectar();}

}

ejecutamos nuevamente el proyecto (F6) y tenenmos el nuevo registro aadido a nuestra tabla

Leer base de datos con netbeans

Ahora que pudimos manipular la base de datos con la "insercion" denuevos registros, ahora necesitamos extraer esos registros para poder verlos, modificaremos la clase"persona.java"para aadir la funcion"getDatos()".

Nuestra clase Persona.java que da de esta forma:

package contactos;import java.sql.*;/*** @web http://jc-mouse.blogspot.com/* @author mouse*/public class persona {conectate con;public persona (){con = new conectate();} /*Aade 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 tablatry{ 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 "); ResultSet res = pstm.executeQuery(); int i = 0; 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 funcionGetDatos()esta definida comoObject [][],tambien podemos definirla comoString[][], 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 -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))); }}

Paso 6:Compila y ejecuta el proyecto

Eliminar/Borrar registros de base de datos con netbeans

Le aadiremos una nueva funcionalidad a nuestro proyectobase 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 sonconectate.javaypersona.java, la base de datos(dbcontactos)y contiene una tabla(persona)puedes ver con mas detalle nuestra base de datosaqui.

Los cambios que realizamos son:Aadiremos un nuevojButtonal 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, aadiremos la nueva funciondeletePersona(), 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 aadimos el eventoActionPerformded, 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 cdigo 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 elcodigocorrespondiente y con este codigo hara un llamado a deletePersona(codigo), elimina el registro y reinicia el valor de fila a -1 para evitar inconvenientes.

Actualizar/update registros de la base de datos con netbeans

Una ultima funcionalidad que le falta a nuestro miniproyecto debase de datos, es la de poder"modificar"los datos leidos de la base de datos, para despues poder guardar esos cambios, para ello:

- Aadimos un nuevo jButton a nuestro proyecto.

- En nuestra clase, persona.java aadimos 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(1, name); pstm.setString(2, paterno);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, aadimos 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(); }}

Lo unico que hace es capturar los datos del JTable, asignarlas a variables y llamar a la funcion updatePersona().