Base de Datos + Netbeans + MySQL
Base de Datos + Netbeans + MySQL
Base de Datos + Netbeans + MySQL
Nuestro proyecto de Base de Datos se llamar "DBContactos", el cdigo contiene las funciones bsicas que debe tener un proyecto de Base de Datos, aade nuevos registros, los elimina y tambin puede modificar esos registros. Esta compuesto de los siguientes capitulos.
1. 2. 3. 4. 5. 6. 7. 8.
Mysql: creacin de base de datos y tabla Clase conexion Base de Datos Probando la clase "conectate.java" Sentencias SQL en netbeans Leer base de datos en Netbeans Borrar/delete registros de la base de datos en Netbeans Actualizar / Update registros de la base de datos en Netbeans Parte Grfica - SWING
2. Crear la tabla persona: a. Seleccionar la conexin dbcontactos b. Boton derecho sobre tabla y elegir Execute Command
c. En la venta de comandos que se abre, digitar lo siguiente: create table persona( id bigint(10) NOT NULL auto_increment, Nombre varchar(32) not null, appPaterno varchar(32) not null, appMaterno varchar(32), mail varchar(32) default '@hotmail.com', PRIMARY KEY (ID) );
3. Insertar datos en la tabla. Ejecutar los siguientes querys: insert into persona(Nombre, appPaterno, appMaterno, mail) values("Anita","Quiere","Problemas","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Pablito","Saco","Unclavito","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Paola","Nomequire","Hablar","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail)
values("Mirtha","Hornea","Pasteles","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Luis","Mamani","Mamani","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Hilarion","Daza","McDonald","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Juan Carlos","Quinata","yQue","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Yamevoy","Aburriendo","","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Ysigo","Escribiendo","Summadre","[email protected]"); insert into persona(Nombre, appPaterno, appMaterno, mail) values("Ultimo","seran","Primeros","[email protected]");
package PAQUETE_QUE_USARA_ESTA_CLASE ; import java.sql.*; 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; } }
3. Modificar los siguientes datos: package PAQUETE_QUE_USARA_ESTA_CLASE ; dbcontactos import java.sql.*; public class conectate { static String bd = "NOMBRE_BASE_DE_DATOS"; dbcontactos static String login = "USUARIO"; static String password = "PASSWORD"; static String url = "jdbc:mysql://localhost/"+bd; 4. Crear una clase llamada Persona.java. En esta clase colocar el siguiente cdigo:
package dbcontactos; public class Persona { conectate con; public Persona (){ con = new conectate(); } }
5. Editar la clase llamada DBcontactos.java. Dentro del mtodo main colocar el siguiente cdigo:
package dbcontactos; public class Main { public static void main(String[] args) { Persona p = new Persona (); p.con.desconectar(); } }
6. Explicacin: se crea un objeto p de la clase Persona. El constructor de la clase Persona ejecutar la conexin. 7. Agregar la librera de clases de mysql:
b. En la ventana que aparece, seleccionar MySql JDBC Driver. Presionar Add Library
8. Ejecutar el proyecto.
package dbcontactos; import java.sql.*; 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 { String sSql = "INSERT INTO " + "persona(Nombre, appPaterno, appMaterno, mail) " + " VALUES(?,?,?,?)"; PreparedStatement pstm = con.getConnection().prepareStatement(sSql); 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); } } }
5.
3. Explicacin: 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
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(); }
5. Ejecutar el programa:
6.
1.
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 estructura de nuestra tabla "Persona". En la clase persona.java, aadiremos el nuevo mtodo deletePersona(), dentro la cual colocaremos la instruccin SQL, ejecutaremos la sentencia y cerramos.
2.
public void deletePersona(String cod){ String sSql = "DELETE FROM persona where id = ?"; try { PreparedStatement pstm = con.getConnection().prepareStatement(sSql); pstm.setString(1, cod); pstm.execute(); pstm.close(); }catch(SQLException e){ System.out.println(e); } }
3.
public static void main(String[] args) { Persona p = new Persona(); Object [][] sc ; //Borra registro de la tabla persona, id = 1 p.deletePersona("1"); //Muestra tabla persona sc = p.getDatos(); for(int i=0;i<sc.length ;i++){ System.out.println("> " + sc[i][0] + " - " + sc[i][1]); } p.con.desconectar(); }
4.
7.
public void updatePersona(String id, String name, String paterno, String materno, String mail){ String sSql = "UPDATE persona " + "SET Nombre = ? ," + "appPaterno = ? ," + "appMaterno = ? ," + "mail = ? " + "WHERE id = ? "; try { PreparedStatement pstm = con.getConnection().prepareStatement(sSql); 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); } }
3. Explicacin: este nuevo mtodo, recibe como parmetros el "id" cdigo del registro que se modificara, adems 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. 4. Modificar el mtodo main, para actualizar registros:
public static void main(String[] args) { Persona p = new Persona(); Object [][] sc ; //Borrar registros de la tabla persona, id=1 //p.deletePersona("1"); //actualizar registros p.updatePersona("2", "Periquito", "Los Palotes", "No tiene", "[email protected]");
//Muestra tabla persona sc = p.getDatos(); for(int i=0;i<sc.length ;i++){ System.out.println("> " + sc[i][0] + " - " + sc[i][1]); } p.con.desconectar(); }
8.
1. Crea un jFrame "ContactosForma" y coloca los siguientes controles, renmbralos como se ve en la imagen de abajo. cuidado con las maysculas y minsculas!
public class ContactosForma extends javax.swing.JFrame { Persona p= new Persona(); Object[][] dtPer; int fila = -1;
3. Aade estos dos mtodos, el primero actualizaTabla(), actualiza el objeto tblPersona cada vez que se lo invoca, el mtodo limpia(), su funcin es la de limpiar los jTextFields para aadir nuevos datos.
private void actualizaTabla(){ 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); tblPersona.setModel(datos); }
9. Modificar el mtodo getDatos(), para que capture todos los datos de la consulta, de manera que quede de la siguiente forma:
public Object [][] getDatos(){ String sSql; int registros = 0; //obtenemos la cantidad de registros existentes en la tabla try{ sSql = "SELECT count(1) as total FROM persona "; PreparedStatement pstm = con.getConnection().prepareStatement(sSql); ResultSet res = pstm.executeQuery(); res.next(); registros = res.getInt("total"); res.close(); }catch(SQLException e){ System.out.println(e); } String estCodigo; String estNombre; String estPaterno; String estMaterno; String estMail; Object[][] data = new String[registros][5]; //realizamos la consulta sql y llenamos los datos en "Object" try{ sSql = "SELECT " + " id, Nombre, appPaterno, appMaterno, mail " + " FROM persona" + " ORDER BY id "; PreparedStatement pstm = con.getConnection().prepareStatement(sSql); ResultSet res = pstm.executeQuery(); int i = 0; while(res.next()){ estCodigo = res.getString("id"); estNombre = res.getString("nombre"); estPaterno = res.getString("appPaterno"); estMaterno = res.getString("appMaterno"); 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; }
12. Para poder eliminar un registro de la base de datos, utilizaremos el mtodo deletePersona(), ya creado anteriormente. 13. Al boton que creamos "btnEliminar", le aadimos el evento ActionPerformded, copias el siguiente codigo.
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { if (fila > -1){ String codigo = String.valueOf(tblPersona.getValueAt(fila, 0)); p.deletePersona(codigo); actualizaTabla(); fila=-1; } }
14. Explicacin: 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 "tblPersona", si esto es cierto, quiere decir que tenemos una fila seleccionada, por lo tanto proceder a extraer el cdigo correspondiente y con este cdigo hara un llamado a deletePersona(codigo), elimina el registro y reinicia el valor de fila a -1 para evitar inconvenientes.
16. Para poder actualizar un registro de la base de datos, utilizaremos el mtodo updatePersona(), ya creado anteriormente. 17. Explicacion: Este nuevo mtodo, recibe como parmetros el "id" cdigo del registro que se modificara, adems 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 18. En la ventana grfica, al botn btnActualizar, le agregamos el siguiente evento:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { if (fila > -1){ String codigo = String.valueOf(tblPersona.getValueAt(fila, 0)); String name = txtNombre.getText(); String pat String mat = txtPaterno.getText(); = txtMaterno.getText();
19. Lo nico que hace es capturar los datos del JTable, asignarlas a variables y llamar al mtodo actualizaTabla ().