Download PRÁCTICA Nº 16 CONEXIÓN A UNA BASE DE DATOS, INGRESO

Document related concepts
no text concepts found
Transcript
ISTP: Manuel Seoane Corrales
Java Swing
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)
)
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
Java Swing
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:
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;
}
}
4. Crea una clase llamada Persona e ingresa el siguiente código:
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);
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
Java Swing
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);
}
1. return
Ahora data;
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.
Lic. Bernardo C. Hermitaño Atencio
}
ISTP: Manuel Seoane Corrales
Java Swing
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.
Persona p= new Persona();
Object[][] dtPer;
int fila = -1;
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.
private void updateTabla(){
String[] columNames = {"id","Nombre","ap. Paterno","ap. Materno", "EMail"};
// 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]");
}
Lic. Bernardo C. Hermitaño Atencio
ISTP: Manuel Seoane Corrales
Java Swing
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
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)));
}
}
10. Compila y ejecuta el proyecto
Lic. Bernardo C. Hermitaño Atencio