Base de Datos + Netbeans + MySQL

Fuente: JCMouse Modificado: Ing. Hernán Medina

Nuestro proyecto de Base de Datos se llamará "DBContactos", el código contiene las funciones básicas que debe tener un proyecto de Base de Datos, añade nuevos registros, los elimina y también puede modificar esos registros. Esta compuesto de los siguientes capitulos.

1. 2. 3. 4. 5. 6. 7. 8.

Mysql: creación 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 Gráfica - SWING

Parte 1 : Mysql: creación de base de datos y tabla

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

"Problemas". appMaterno. Ejecutar presionando el botón 3. insert into persona(Nombre. appMaterno varchar(32). appMaterno. appPaterno. appPaterno.com"). appPaterno varchar(32) not null. Insertar datos en la tabla. d."ana233@hotmail."paomala@hotmail. mail) . mail) values("Paola". mail varchar(32) default '@hotmail. Seleccionar la conexión “dbcontactos” b."clavito009@hotmail.2. appMaterno. appPaterno. appMaterno. Ejecutar los siguientes querys: insert into persona(Nombre. mail) values("Pablito". PRIMARY KEY (ID) ). Boton derecho sobre tabla y elegir “Execute Command” c."Nomequire". appPaterno. Crear la tabla persona: a.com'."Saco".com")."Unclavito".com")."Hablar"."Quiere". insert into persona(Nombre. insert into persona(Nombre. En la venta de comandos que se abre. mail) values("Anita". Nombre varchar(32) not null. digitar lo siguiente: create table persona( id bigint(10) NOT NULL auto_increment.

"mmmmmmm23@hotmail. insert into persona(Nombre.com")."Hornea"."locoo1@hotmail. appMaterno."ani233@hotmail. mail) values("Juan Carlos". appPaterno. insert into persona(Nombre."Mamani"."primerillo1212@hotmail. mail) values("Hilarion"."ana233@hotmail."Primeros".com"). mail) values("Luis".com"). appPaterno."Pasteles". appPaterno."seran".com"). insert into persona(Nombre. appPaterno."McDonald"."Escribiendo". insert into persona(Nombre. mail) values("Ultimo"."Summadre". appMaterno. mail) values("Ysigo"."". ."lesigo88@hotmail. appMaterno. appMaterno. appMaterno."Quinata". mail) values("Yamevoy". insert into persona(Nombre."yQue"."Aburriendo".com")."lucho_to777@hotmail.com"). insert into persona(Nombre."Daza".values("Mirtha".com"). appMaterno. appPaterno. appPaterno."Mamani".

jdbc.Parte 2: Clase Conexion a Base de Datos Cuando se trabaja con base de datos en java. static String url = "jdbc:mysql://localhost/"+bd. Esta "clase java" se llama "conectate. public class conectate { static String bd = "NOMBRE_BASE_DE_DATOS". limpio y que sea fácil de mantener.java". Si trabajas con mysql. y el uso es bastante sencillo.getConnection(url. static String password = "PASSWORD". listo"). conn = DriverManager. lo mejor para tener un trabajo controlado. el nombre de la base de datos.Driver"). } } .println("Conección a base de datos "+bd+". import java. usuario y password package PAQUETE_QUE_USARA_ESTA_CLASE . es hacer uso de una clase exclusiva para la conexión. public conectate() { try{ Class.*.mysql. }catch(ClassNotFoundException e){ System.out.login. lo unico que debes modificar es el "paquete" donde lo usaras.sql. } } public Connection getConnection(){ return conn.out. static String login = "USUARIO". } public void desconectar(){ conn = null. Connection conn = null.password).out. if (conn!=null){ System.forName("com. } }catch(SQLException e){ System.println(e).println(e).

Modificar los siguientes datos: package PAQUETE_QUE_USARA_ESTA_CLASE . En esta clase colocar el siguiente código: package dbcontactos. p. Explicación: se crea un objeto “p” de la clase Persona.java. Marcar la casilla “Create main class” 2. 7. public class Persona { conectate con. Crear una clase llamada “Persona.*. 4.Parte 3: Probando la clase "conectate. Agregar la librería de clases de mysql: . static String password = "PASSWORD". Agregar el archivo “conectate. public Persona (){ con = new conectate(). } } 5.desconectar(). llamado DBContactos.java”. static String url = "jdbc:mysql://localhost/"+bd. } } 6.java" 1. Dentro del método main colocar el siguiente código: package dbcontactos. El constructor de la clase Persona ejecutará la conexión. Editar la clase llamada “DBcontactos.  dbcontactos static String login = "USUARIO". Crear un proyecto en NetBeans. public class Main { public static void main(String[] args) { Persona p = new Persona (). public class conectate { static String bd = "NOMBRE_BASE_DE_DATOS".sql.  dbcontactos import java.con.java” (pueden hacer drag & drop desde el explorador de Windows) 3.

En el proyecto. Presionar “Add Library” c. En la ventana que aparece. .a. add Library b. botón derecho. seleccionar la carpera “Libraries”. Ejecutar el proyecto. Debe quedar así: 8. seleccionar “MySql JDBC Driver”.

agregar el método “nuevaPersona” package dbcontactos. String am. p. pstm. name). "Zutanito". mail) " + " VALUES(?. pstm.close().execute().setString(1. pstm.Parte 4: Sentencia SQL en netbeans 1. mail).java" . } /*Añade un nuevo registro*/ public void nuevaPersona(String name.*.nuevaPersona("Fulanito". appMaterno. }catch(SQLException e){ System. public class Persona { conectate con.setString(3. pstm. PreparedStatement pstm = con. appPaterno. pstm.setString(2.desconectar().?.prepareStatement(sSql). Modificaremos la clase "Persona. "Menganito". import java. public Persona (){ con = new conectate().sql.com").?)".out. } } } 2. Añadir nuevo código al método main: public class Main { public static void main(String[] args) { Persona p = new Persona().setString(4. "fmz@hotmail.println(e). ap).getConnection(). String ap. p. pstm.?.con. String mail){ try { String sSql = "INSERT INTO " + "persona(Nombre. am). } .

Se ejecuta el proyecto y tenemos el nuevo registro añadido en nuestra tabla: .} 3.

close(). ResultSet res = pstm.prepareStatement(sSql).executeQuery().prepareStatement(sSql). } return s.out. s[i][0] = estCodigo. Leer base de datos en Netbeans 1. int i = 0. s[i][1] = estNombre. Nombre FROM persona ORDER BY id ". //realizamos la consulta sql y llenamos los datos en "Object" try{ sSql = "SELECT id.getString("nombre"). estNombre = res.println(e).next().println(e).executeQuery(). while(res.java” y añadir el método “getDatos()”: /*obtenemos todos los datos de la tabla*/ public Object [][] getDatos(){ String sSql.getConnection(). ResultSet res = pstm.getConnection(). } .getString("id"). } res.out. Object[][] s = new String[x][2]. registros = res. PreparedStatement pstm = con.5. String estNombre.close().getInt("total").next()){ estCodigo = res. int registros = 0. }catch(SQLException e){ System. //obtenemos la cantidad de registros existentes en la tabla try{ sSql = "SELECT count(1) as total FROM persona ". res. PreparedStatement pstm = con. Utilizaremos la sentencia SQL SELECT 2. Modificar la clase “Persona. i++. }catch(SQLException e){ System. } String estCodigo. res.

i<sc. for(int i=0. la primera encargada de realizar una consulta para conocer el numero de registros existentes y gurdarla en la variable "registros".i++){ System.desconectar().3. sc = p. Modificar el método main.out.getDatos(). } 5. la funcion esta dividida en dos partes. } p. Explicación: La nueva funcion GetDatos() esta definida como Object [][]. tambien podemos definirla como String[][]. Object [][] sc . Ejecutar el programa: . debe quedar así: public static void main(String[] args) { Persona p = new Persona().con.length ." + sc[i][1]). 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.println("> " + sc[i][0] + " .

getConnection(). }catch(SQLException e){ System. Object [][] sc . ejecutaremos la sentencia y cerramos.length . Ejecutar el proyecto. try { PreparedStatement pstm = con.java. 2. } } 3.out. public void deletePersona(String cod){ String sSql = "DELETE FROM persona where id = ?". ha sido eliminado el registro con id = 1 . añadiremos el nuevo método deletePersona().out.println("> " + sc[i][0] + " ." + sc[i][1]). El método main de la clase DBContactos. para ello debemos tener muy en cuenta la estructura de nuestra tabla "Persona".6.con.execute().close(). Para poder eliminar un registro de la base de datos realizaremos una instruccion SQL con el comando DELETE.getDatos(). } p.println(e). dentro la cual colocaremos la instrucción SQL. pstm. cod). } 4.setString(1. id = 1 p. //Borra registro de la tabla persona.i++){ System. Borrar/delete registros de la base de datos en Netbeans 1. for(int i=0. pstm.deletePersona("1"). En la clase persona. pstm.desconectar().i<sc. //Muestra tabla persona sc = p.java quedará así: public static void main(String[] args) { Persona p = new Persona(). Como se observa.prepareStatement(sSql).

.

Object [][] sc .close(). "No tiene". pstm. String name.deletePersona("1"). 4. Luego se realiza una consulta SQL pasando esos datos.valueOf(id)).setString(4. "Periquito". pstm. apellido paterno .println(e). para después poder guardar esos cambios.java y agregamos el siguiente método: public void updatePersona(String id. . //Borrar registros de la tabla persona. para actualizar registros: public static void main(String[] args) { Persona p = new Persona().prepareStatement(sSql)." + "appPaterno = ? .execute(). mail). pstm. pstm. name). materno).getConnection(). String mail){ String sSql = "UPDATE persona " + "SET Nombre = ? ." + "appMaterno = ? . Una última funcionalidad es poder "modificar" los datos leídos de la base de datos.setString(1.setString(2.7. id=1 //p. paterno).setString(5. recibe como parámetros el "id" código del registro que se modificara. para ello: 2. "Los Palotes".updatePersona("2". String. pstm. Modificar el método main. String paterno. como el nombre. //actualizar registros p. materno y el mail de la persona. pstm. } } 3. Explicación: este nuevo método." + "mail = ? " + "WHERE id = ? ". Modificamos la clase Persona. } catch(SQLException e){ System. try { PreparedStatement pstm = con.setString(3.out. String materno. pstm. Actualizar / Update registros de la base de datos en Netbeans 1.com"). "plp@hotmail. además de los datos necesarios para realizar la consulta.

} 5.i++){ System. Ejecutar el proyecto: se ha modificado el nombre del id=2 .con." + sc[i][1]).println("> " + sc[i][0] + " . } p.length .i<sc.//Muestra tabla persona sc = p.desconectar().out.getDatos(). for(int i=0.

Añade estos dos métodos. Crea un jFrame "ContactosForma" y coloca los siguientes controles. Vamos a la pestaña source e ingresamos lo siguiente: (en la parte superior) public class ContactosForma extends javax."ap. tblPersona. } .JFrame { Persona p= new Persona(). private void actualizaTabla(){ String[] columNames = {"id". ¡cuidado con las mayúsculas y minúsculas! 2.columNames)."Nombre".SWING 1.swing. actualiza el objeto tblPersona cada vez que se lo invoca. su función es la de limpiar los jTextFields para añadir nuevos datos.getDatos(). renómbralos como se ve en la imagen de abajo. Paterno". el primero actualizaTabla(). el método limpia()."ap.8. "E-Mail"}. Object[][] dtPer. // se utiliza la funcion dtPer = p.setModel(datos). 3. Materno". Parte Gráfica . int fila = -1. // se colocan los datos en la tabla DefaultTableModel datos = new DefaultTableModel(dtPer.

txtPaterno.getPoint()). email). } 4.getText().event.setText("").getValueAt(fila. } 5. txtEMail.ActionEvent evt) { String nombre = txtNombre.getValueAt(fila.valueOf(tblPersona.event. txtPaterno.setText(""). 2))).MouseEvent evt) { fila = tblPersona.getText(). Agregar el evento ActionPerformed al objeto btnLimpiar: private void btnLimpiarActionPerformed(java. p.setText("tu_correo@hotmail").valueOf(tblPersona. 4))).getValueAt(fila.getText(). txtMaterno.valueOf(tblPersona. txtEMail.event. 1))).ActionEvent evt) { limpia(). String materno = txtMaterno.awt. String email = txtEMail.setText(String. Agregar el evento MouseClicked al objeto tblPersona: private void tblPersonaMouseClicked(java. 3))). txtMaterno.awt.setText(""). actualizaTabla(). materno.setText(String.private void limpia(){ txtNombre. actualizaTabla(). de manera que solo quede el siguiente código: . String paterno = txtPaterno. Desde el constructor llamar a los métodos actualizaTabla() y limpia(): public ContactosForma() { initComponents(). if (fila > -1){ txtNombre.getText().rowAtPoint(evt. Modificar el método main.getValueAt(fila. } 7. } 6.setText(String.valueOf(tblPersona.setText(String.nuevaPersona(nombre. limpia(). } } 8. paterno.awt. Agregar el evento ActionPerformed al objeto btnNuevo: private void btnNuevoActionPerformed(java.

prepareStatement(sSql). String estMaterno. int registros = 0. ResultSet res = pstm. while(res. appMaterno.getString("id"). estPaterno = res.next().close(). Nombre.prepareStatement(sSql).getString("mail").out.println(e). estMaterno = res.getConnection(). res. }catch(SQLException e){ System. appPaterno.public static void main(String[] args) { ContactosForma cf = new ContactosForma(). PreparedStatement pstm = con. de manera que quede de la siguiente forma: public Object [][] getDatos(){ String sSql. Modificar el método getDatos(). registros = res. res. String estNombre. ResultSet res = pstm.executeQuery().getString("nombre").getInt("total").setVisible(true). } 9. cf. } String estCodigo. . para que capture todos los datos de la consulta. mail " + " FROM persona" + " ORDER BY id ". int i = 0.getString("appMaterno"). estNombre = res. String estPaterno. //realizamos la consulta sql y llenamos los datos en "Object" try{ sSql = "SELECT " + " id. estMail = res. Object[][] data = new String[registros][5].next()){ estCodigo = res. //obtenemos la cantidad de registros existentes en la tabla try{ sSql = "SELECT count(1) as total FROM persona ".getConnection(). String estMail.getString("appPaterno"). PreparedStatement pstm = con.executeQuery().

private void btnEliminarActionPerformed(java. Boton Actualizar registro 15. Al boton que creamos "btnEliminar". data[i][2] = estPaterno. por lo tanto procederá a extraer el código correspondiente y con este código hara un llamado a deletePersona(codigo). si esto es cierto.data[i][0] = estCodigo.esto sucede cuando se realiza un clic sobre el objeto "tblPersona". copias el siguiente codigo. nuestra pantalla quedará así: . elimina el registro y reinicia el valor de fila a -1 para evitar inconvenientes.awt. data[i][3] = estMaterno.getValueAt(fila. actualizaTabla().valueOf(tblPersona.ActionEvent evt) { if (fila > -1){ String codigo = String. Añadimos un nuevo botón: btnActualizar. 0)).out. fila=-1. Explicación: Este código lo que hace es revisar si la variable "fila" contiene un valor diferente a "-1". la interfaz deberá quedar así: 12. 13.deletePersona(codigo). Compilar y ejecutar el proyecto. Boton Eliminar Registro 11. } } 14. data[i][4] = estMail.close(). utilizaremos el método deletePersona(). p. } res. ya creado anteriormente. quiere decir que tenemos una fila seleccionada. Para poder eliminar un registro de la base de datos. data[i][1] = estNombre. }catch(SQLException e){ System.event. } 10. i++. Agregar el jButton “Eliminar”. } return data. le añadimos el evento ActionPerformded.println(e).

ActionEvent evt) { if (fila > -1){ String codigo = String. name. 0)). Para poder actualizar un registro de la base de datos. Lo único que hace es capturar los datos del JTable. al botón btnActualizar. mat.updatePersona(codigo. apellido paterno . materno y el mail de la persona. } } 19. p.getText(). En la ventana gráfica. además de los datos necesarios para realizar la consulta.valueOf(tblPersona.getText(). actualizaTabla(). recibe como parámetros el "id" código del registro que se modificara. como el nombre. String mail = txtEMail.getText().event. Explicacion: Este nuevo método. = txtMaterno. asignarlas a variables y llamar al método actualizaTabla ().awt. . utilizaremos el método updatePersona(). Luego se realiza una consulta SQL pasando esos datos 18. pat. 17. String pat String mat = txtPaterno. String name = txtNombre.16. ya creado anteriormente. le agregamos el siguiente evento: private void jButton1ActionPerformed(java.getValueAt(fila.getText(). mail).

Sign up to vote on this title
UsefulNot useful