practica16
TRANSCRIPT
ISTP: Manuel Seoane Corrales Java Swing
Lic. Bernardo C. Hermitaño Atencio
PRÁCTICA Nº 16
CONEXIÓN A UNA BASE DE DATOS, INGRESO Y VISUALIZACIÓN DE
REGISTROS
PROBLEMA: Diseña una aplicación que permita probar el funcionamiento de un DSN (Data
Source Name creado con MySql, además que muestra y que permita ingresar registros a la
base de datos.
PROCEDIMIENTO:
1. Crea la base de datos gestion en mySql y crea una tabla llamada persona de la
siguiente manera:
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)
)
ISTP: Manuel Seoane Corrales Java Swing
Lic. Bernardo C. Hermitaño Atencio
2. Crea un proyecto con el nombre practica16 y con el paquete base.
3. Crea una clase llamada Conectacte e ingresa el siguiente código:
4. Crea una clase llamada Persona e ingresa el siguiente código:
package base; import java.sql.*; public class conectate { Connection conn = null; public conectate() { try{ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gestion","root","root"); if (conn!=null){ System.out.println("Conección a base de datos 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; } }
package base; import com.mysql.jdbc.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; 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 = (PreparedStatement) 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);
ISTP: Manuel Seoane Corrales Java Swing
Lic. Bernardo C. Hermitaño Atencio
1. Ahora creamos el frame Principal: Clic derecho en el paquete proyecto15, elegimos
nuevo jFrame Form de nombre Principal. En su propiedad title escribimos un titulo y le
colocamos distribución BorderLayout.
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 = (PreparedStatement) 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 = (PreparedStatement) 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;
}
}
ISTP: Manuel Seoane Corrales Java Swing
Lic. Bernardo C. Hermitaño Atencio
5. Diseña en un jFrame la siguiente ventana e ingresa los nombres de sus elementos:
6. Declara import javax.swing.table.DefaultTableModel;
7. Coloca estas líneas de código.
8. Añade estos dos métodos, el primero updateTabla(), actualiza el objeto tabla cada vez
que se lo invoca, el método nuevo(), su función es la de limpiar los jTextFields para
añadir nuevos datos.
Persona p= new Persona(); Object[][] dtPer; int fila = -1;
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(""); txtMail.setText("[email protected]"); }
ISTP: Manuel Seoane Corrales Java Swing
Lic. Bernardo C. Hermitaño Atencio
9. 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
10. Compila y ejecuta el proyecto
private void formWindowOpened(java.awt.event.WindowEvent evt) { // TODO add your handling code here: updateTabla(); nuevo(); } private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: nuevo(); } private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String name = txtName.getText(); String pat = txtPaterno.getText(); String mat = txtMaterno.getText(); String mail = txtMail.getText(); p.NuevaPersona(name, pat, mat, mail); updateTabla(); } private void TablaMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: 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))); } }