practica16

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

Upload: eduardo-reyes

Post on 06-Apr-2015

97 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: practica16

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)

)

Page 2: practica16

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

Page 3: practica16

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;

}

}

Page 4: practica16

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

Page 5: practica16

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