Base de Datos + Netbeans + MySQL

download Base de Datos + Netbeans + MySQL

of 19

Transcript of Base de Datos + Netbeans + MySQL

Base de Datos + Netbeans + MySQLFuente: JCMouse Modificado: Ing. Hernn Medina

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

Parte 1 : Mysql: creacin de base de datos y tabla

1. CREA UNA BASE DE DATOS CON NOMBRE "dbcontactos"

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) );

d. Ejecutar presionando el botn

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]");

Parte 2: Clase Conexion a Base de DatosCuando se trabaja con base de datos en java, lo mejor para tener un trabajo controlado, limpio y que sea fcil de mantener, es hacer uso de una clase exclusiva para la conexin. Esta "clase java" 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.*; 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; } }

Parte 3: Probando la clase "conectate.java"1. Crear un proyecto en NetBeans, llamado DBContactos. Marcar la casilla Create main class 2. Agregar el archivo conectate.java (pueden hacer drag & drop desde el explorador de Windows)

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:

a. En el proyecto, seleccionar la carpera Libraries, botn derecho, add Library

b. En la ventana que aparece, seleccionar MySql JDBC Driver. Presionar Add Library

c. Debe quedar as:

8. Ejecutar el proyecto.

Parte 4: Sentencia SQL en netbeans1. Modificaremos la clase "Persona.java" , agregar el mtodo nuevaPersona

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); } } }

2. Aadir nuevo cdigo al mtodo main:public class Main { public static void main(String[] args) { Persona p = new Persona(); p.nuevaPersona("Fulanito", "Menganito", "Zutanito", "[email protected]"); p.con.desconectar(); }

}

3. Se ejecuta el proyecto y tenemos el nuevo registro aadido en nuestra tabla:

5.

Leer base de datos en Netbeans1. Utilizaremos la sentencia SQL SELECT 2. Modificar la clase Persona.java y aadir el mtodo getDatos():/*obtenemos todos los datos de la tabla*/ 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; Object[][] s = new String[x][2]; //realizamos la consulta sql y llenamos los datos en "Object" try{ sSql = "SELECT id, Nombre 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"); s[i][0] = estCodigo; s[i][1] = estNombre; i++; } res.close(); }catch(SQLException e){ System.out.println(e); } return s; }

3. Explicacin: La nueva funcion GetDatos() esta definida como Object [][], tambien podemos definirlacomo 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

4. Modificar el mtodo main, debe quedar as:

public static void main(String[] args) { Persona p = new Persona(); Object [][] sc ; sc = p.getDatos(); for(int i=0;i -1){ txtNombre.setText(String.valueOf(tblPersona.getValueAt(fila, 1))); txtPaterno.setText(String.valueOf(tblPersona.getValueAt(fila, 2))); txtMaterno.setText(String.valueOf(tblPersona.getValueAt(fila, 3))); txtEMail.setText(String.valueOf(tblPersona.getValueAt(fila, 4))); } }

8. Modificar el mtodo main, de manera que solo quede el siguiente cdigo:

public static void main(String[] args) { ContactosForma cf = new ContactosForma(); cf.setVisible(true); }

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; }

10. Compilar y ejecutar el proyecto.

Boton Eliminar Registro11. Agregar el jButton Eliminar, la interfaz deber quedar as:

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.

Boton Actualizar registro15. Aadimos un nuevo botn: btnActualizar, nuestra pantalla quedar as:

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();

String mail = txtEMail.getText(); p.updatePersona(codigo, name, pat, mat, mail); actualizaTabla(); } }

19. Lo nico que hace es capturar los datos del JTable, asignarlas a variables y llamar al mtodo actualizaTabla ().