Вы находитесь на странице: 1из 16

JAVA SWING Y MYSQL

1. Softwares utilizados
a. NetBeans 8.2.
b. Java Development Kit (JDK).
c. MySQL Server 8.0
d. MySQL Connector Java 8.0.11
e. SQLYog (Opcional)
2. La base de datos (Usando SQLYog)
a. Crear la base de datos agenda

b. Crear tabla contactos


CREATE DATABASE agenda;
CREATE TABLE agenda.contactos( IDContacto INT NOT NULL, nombre
VARCHAR(20), numero VARCHAR(15), correo VARCHAR(35), PRIMARY KEY (ID) );

3. Crear el Proyecto (Agenda)


a. Abrir NetBeans, clic en Archivo -> Proyecto nuevo

b. Elegir tipo de proyecto, Java Application

c. Indicar un nombre para el proyecto, prjAgenda.

4. Descargar el conector de MySQL para JAVA


a. Ingresar a https://dev.mysql.com/downloads/connector/j/
b. Descargar el conector
c. Descomprimir el archivo descargado

5. Añadir el conector de MySQL al proyecto


a. Hacer Clic derecho en la carpeta Biblitecas del proyecto.

b. Buscar la carpeta que se descomprimió anteriormente y buscar dentro del conector, seleccionarlo y hacer clic
en abrir

c. El conector debería quedar añadido


6. Crear los formularios
a. Añadir un Formulario JFrame, con el nombre frmAgenda, este será la pantalla principal donde se buscarán
los contactos.

b. Añadir 2 JDialog, con los nombres frmInsertar y frmActualizar, estos servirán para Agregar contactos y
Actualizar contactos, respectivamente.
c. El proyecto debería quedar de esta forma

7. Crear las interfaces gráficas (SWING)


a. En el archivo frmAgenda.java, colocar los siguientes componentes

Componente Propiedad Valor


Etiqueta (Label) Text Buscar por nombre
Campo de Texto (TextField) Nombre de variable txtBuscar
Text Vacío
Botón (Button) Nombre de variable btnAgregar
Text Agregar
Botón (Button) Nombre de variable btnModificar
Text Modificar
Botón (Button) Nombre de variable btnElim
Text Eliminar
Tabla (Table) Nombre de variable tblContac
Model (Tipo) Código Personal (Personal Code)
Model (Nombre) tmModelo
b. En el archivo frmInsertar.java, colocar los siguientes componentes

Componente Propiedad Valor


Etiqueta (Label) Text ID
Etiqueta (Label) Text Nombre
Etiqueta (Label) Text Número
Etiqueta (Label) Text Correo
Campo de Texto (TextField) Nombre de variable txtID
Text Vacío
Campo de Texto (TextField) Nombre de variable txtNom
Text Vacío
Campo de Texto (TextField) Nombre de variable txtNum
Text Vacío
Campo de Texto (TextField) Nombre de variable txtCorreo
Text Vacío
Botón (Button) Nombre de variable btnGuardar
Text Guardar
c. En el archivo frmActualizar.java, colocar los siguientes componentes

Componente Propiedad Valor


Etiqueta (Label) Text ID
Etiqueta (Label) Text Nombre
Etiqueta (Label) Text Número
Etiqueta (Label) Text Correo
Campo de Texto (TextField) Nombre de variable txtID
Text Vacío
Editable False (Desactivado)
Código - Modificadores de variable public
Campo de Texto (TextField) Nombre de variable txtNom
Text Vacío
Código - Modificadores de variable public
Campo de Texto (TextField) Nombre de variable txtNum
Text Vacío
Código - Modificadores de variable public
Campo de Texto (TextField) Nombre de variable txtCorreo
Text Vacío
Código - Modificadores de variable public
Botón (Button) Nombre de variable btnActua
Text Actualizar
8. Programando el proyecto (añadir los códigos resaltados de amarillo)
a. En el archivo PrjAgenda.java
Antes
package prjagenda;
public class PrjAgenda {
public static void main(String[] args) {

}
}
Ahora
package prjagenda;
public class PrjAgenda {
public static void main(String[] args) {
frmAgenda frm = new frmAgenda();
frm.setVisible(true);
}
}
b. En el archivo frmAgenda.java
i. Importar clases
Antes
package prjagenda;
public class frmAgenda extends javax.swing.JFrame {
Ahora
package prjagenda;
import java.sql.*;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class frmAgenda extends javax.swing.JFrame {

ii. Declarar variables


Antes
public class frmAgenda extends javax.swing.JFrame {
public frmAgenda() {

Ahora
public class frmAgenda extends javax.swing.JFrame {
DefaultTableModel tmModelo;
Connection cnConec;
PreparedStatement stBusca;
Statement stElim;
ResultSet rsResul;
String sBus, sSQL;
String sID, sNom, sNum, sCorreo;
public frmAgenda() {

Aclaración:
 El nombre tmModel debe ser idéntico al que se indicó en la propiedad Model de la tabla.
 cnConec permitirá conectarse a la base de datos.
 stBusca permitirá ejecutar la instrucción SQL de búsqueda
 stElim permitirán ejecutar la instrucción SQL de eliminación.
 rsResul contendrá los resultados de stBusca.
 sBus es lo que se buscará y sSQL será la instrucción en lenguaje SQL.
 sID, sNom sNum y sCorreo contendrán los datos del contacto seleccionado en la tabla, se usarán
para modificarlo o eliminarlo de la base de datos.
iii. Establecer campos para la tabla.
Antes
public frmAgenda() {
initComponents();
}
Ahora
public frmAgenda() {
tmModelo = new DefaultTableModel(null,CamposTabla());
initComponents();
}
private String[] CamposTabla(){
String aCampos[] = new String[]{"ID","Nombre","Nùmero","Correo"};
return aCampos;
}

iv. Crear métodos adicionales, colocarlos debajo del método CamposTabla


Método para conectarse a la base de datos
private void Conectar(){
String url = "jdbc:mysql://localhost:3306/agenda?serverTimezone=UTC";
String user = "root";
String pass = "";
try{
cnConec = DriverManager.getConnection(url, user,pass);
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
Método para buscar los datos y colocar los resultados en la tabla
private void BuscarDatos(){
tmModelo.setRowCount(0);
sBus = txtBuscar.getText();
if (!sBus.equals("")){
try {
sSQL = "select * from contactos where Nombre like '"+sBus+"%';";
stBusca = cnConec.prepareStatement(sSQL);
rsResul = stBusca.executeQuery();
Object datos[] = new Object[4];
while (rsResul.next()){
for (int i=0;i<4;i++){
datos[i]=rsResul.getObject(i+1);
}
tmModelo.addRow(datos);
}
rsResul.close();
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
v. Evento KeyReleased de txtBuscar
Antes
private void txtBuscarKeyReleased(java.awt.event.KeyEvent evt) {

}
Ahora
private void txtBuscarKeyReleased(java.awt.event.KeyEvent evt) {
BuscarDatos();
}
vi. Evento WindowOpened de frmAgenda

Antes
private void formWindowOpened (java.awt.event.KeyEvent evt) {

}
Ahora
private void formWindowOpened (java.awt.event.KeyEvent evt) {
Conectar();
}
vii. Evento actionPerformed (clic) de btnAgregar

Antes
private void btnAgregarActionPerformed (java.awt.event.KeyEvent evt) {

}
Ahora
private void btnAgregarActionPerformed (java.awt.event.KeyEvent evt) {
frmInsertar frmb = new frmInsertar(this, true);
frmb.setVisible(true);
}
viii. Evento actionPerformed (clic) de btnModificar
Antes
private void btnModificarActionPerformed (java.awt.event.KeyEvent evt) {

}
Ahora
private void btnModificarActionPerformed (java.awt.event.KeyEvent evt) {
int nFila;
nFila = tblContac.getSelectedRow();
if (nFila>=0){
frmActualizar fActua = new frmActualizar(this,true);
sID = tblContac.getValueAt(tblContac.getSelectedRow(), 0).toString();
sNom = tblContac.getValueAt(tblContac.getSelectedRow(), 1).toString();
sNum = tblContac.getValueAt(tblContac.getSelectedRow(), 2).toString();
sCorreo = tblContac.getValueAt(tblContac.getSelectedRow(), 3).toString();

fActua.txtID.setText(sID);
fActua.txtNom.setText(sNom);
fActua.txtNum.setText(sNum);
fActua.txtCorreo.setText(sCorreo);
fActua.setVisible(true);
}else{
JOptionPane.showMessageDialog(null, "Seleccione un contacto de la lista.");
}
}
ix. Evento actionPerformed (clic) de btnElim
Antes
private void btnElimActionPerformed (java.awt.event.KeyEvent evt) {

}
Ahora
private void btnElimActionPerformed (java.awt.event.KeyEvent evt) {
int nFila , nResp;
nFila = tblContac.getSelectedRow();
if (nFila>=0){
sID = tblContac.getValueAt(tblContac.getSelectedRow(), 0).toString();
sNom = tblContac.getValueAt(tblContac.getSelectedRow(), 1).toString();
nResp = JOptionPane.showConfirmDialog (null, "¿Desea eliminar a
''"+sNom+"''?","Cuidado",JOptionPane.YES_NO_OPTION);
if(nResp == JOptionPane.YES_OPTION){
try {
stElim = cnConec.createStatement();
sSQL = "delete from contactos where IDContacto = '"+sID+"';";
stBusca.executeUpdate(sSQL);
tmModelo.removeRow(nFila);
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}else{
JOptionPane.showMessageDialog(null, "Seleccione un contacto de la lista.");
}
}
c. En el frmInsertar.java
i. Importar clases
Antes
package prjagenda;
public class frmInsertar extends javax.swing. JDialog {
Ahora
package prjagenda;
import java.sql.*;
import javax.swing.JOptionPane;
public class frmInsertar extends javax.swing. JDialog{
ii. Declarar variables
Antes
public class frmInsertar extends javax.swing. JDialog {
public frmInsertar (java.awt.Frame parent, boolean modal) {

Ahora
public class frmInsertar extends javax.swing. JDialog {
Connection cnConec;
Statement stActua;
String sSQL;
String sID, sNom, sNum, sCorreo;
public frmInsertar (java.awt.Frame parent, boolean modal) {
Aclaración:
 cnConec permitirá conectarse a la base de datos.
 stActua permitirán ejecutar la instrucción SQL de inserción.
 sSQL será la instrucción en lenguaje SQL.
 sID, sNom sNum y sCorreo contendrán los datos escritos en los TextField los cuales serán
grabados en la tabla.
iii. Crear métodos adicionales, colocarlos debajo del método frmInsertar
Método para conectarse a la base de datos
private void Conectar(){
String url = "jdbc:mysql://localhost:3306/agenda?serverTimezone=UTC";
String user = "root";
String pass = "";
try{
cnConec = DriverManager.getConnection(url, user,pass);
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
iv. Evento WindowOpened de frmInsertar

Antes
private void formWindowOpened (java.awt.event.KeyEvent evt) {

}
Ahora
private void formWindowOpened (java.awt.event.KeyEvent evt) {
Conectar();
}
v. Evento actionPerformed (clic) de btnGuardar
Antes
private void btnGuardarActionPerformed (java.awt.event.KeyEvent evt) {

}
Ahora
private void btnGuardarActionPerformed (java.awt.event.KeyEvent evt) {
try {
sID = txtID.getText();
sNom = txtNom.getText();
sNum = txtNum.getText();
sCorreo = txtCorreo.getText();
stActua= cnConec.createStatement();
sSQL = "insert into contactos (idContacto, nombre,numero,correo) value
('"+sID+"','"+sNom+"','"+sNum+"','"+sCorreo+"');";
stActua. executeUpdate(sSQL);
JOptionPane.showMessageDialog(null, "Los datos se grabaron correctamente.");
this.dispose();
} catch (SQLException ex) {
switch (ex.getErrorCode()){
case 1062:
JOptionPane.showMessageDialog(null, "Este ID ya está siendo usado.");
break;
default:
System.out.println(ex.getMessage());
break;
}
}
}
d. En el frmActualizar.java
i. Importar clases
Antes
package prjagenda;
public class frmActualizar extends javax.swing. JDialog {
Ahora
package prjagenda;
import java.sql.*;
import javax.swing.JOptionPane;
public class frmActualizar extends javax.swing. JDialog{
ii. Declarar variables
Antes
public class frmActualizar extends javax.swing. JDialog {
public frmActualizar (java.awt.Frame parent, boolean modal) {
Ahora
public class frmActualizar extends javax.swing. JDialog {
Connection cnConec;
Statement stActua;
String sSQL;
String sID, sNom, sNum, sCorreo;
public frmActualizar (java.awt.Frame parent, boolean modal) {
Aclaración:
 cnConec permitirá conectarse a la base de datos.
 stActua permitirán ejecutar la instrucción SQL de actualización.
 sSQL será la instrucción en lenguaje SQL.
 sID, sNom sNum y sCorreo contendrán los datos escritos en los TextField los cuales serán
modificados en la tabla.
iii. Crear métodos adicionales, colocarlos debajo del método frmActualizar
Método para conectarse a la base de datos
private void Conectar(){
String url = "jdbc:mysql://localhost:3306/agenda?serverTimezone=UTC";
String user = "root";
String pass = "";
try{
cnConec = DriverManager.getConnection(url, user,pass);
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
iv. Evento WindowOpened de frmActualizar

Antes
private void formWindowOpened (java.awt.event.KeyEvent evt) {

}
Ahora
private void formWindowOpened (java.awt.event.KeyEvent evt) {
Conectar();
}
v. Evento actionPerformed (clic) de btnActua
Antes
private void btnActuaActionPerformed (java.awt.event.KeyEvent evt) {

}
Ahora
private void btnActuaActionPerformed (java.awt.event.KeyEvent evt) {
try {
sID = txtID.getText();
sNom = txtNom.getText();
sNum = txtNum.getText();
sCorreo = txtCorreo.getText();
stActua= cnConec.createStatement();
sSQL = "update contactos set nombre='"+sNom+"', numero='"+sNum+"',
correo='"+sCorreo+"' where IDContacto = '"+sID+"';";
stActua. executeUpdate(sSQL);
JOptionPane.showMessageDialog(null, " Los datos se actualizaron correctamente.");
this.dispose();
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}

CAPTURAS DE RESULTADOS
AÑADIENDO CONTACTOS
BUSCANDO CONTACTOS

MODIFICANDO UN CONTACTO
ELIMINANDO UN CONTACTO

Вам также может понравиться