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 [Link]( 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 [Link]
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 [Link], 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 [Link], 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 [Link], 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 [Link]
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();
[Link](true);
}
}
b. En el archivo [Link]
i. Importar clases
Antes
package prjagenda;
public class frmAgenda extends [Link] {
Ahora
package prjagenda;
import [Link].*;
import [Link];
import [Link];
public class frmAgenda extends [Link] {
ii. Declarar variables
Antes
public class frmAgenda extends [Link] {
public frmAgenda() {
Ahora
public class frmAgenda extends [Link] {
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 = [Link](url, user,pass);
}catch(SQLException e){
[Link]([Link]());
}
}
Método para buscar los datos y colocar los resultados en la tabla
private void BuscarDatos(){
[Link](0);
sBus = [Link]();
if (){
try {
sSQL = "select * from contactos where Nombre like '"+sBus+"%';";
stBusca = [Link](sSQL);
rsResul = [Link]();
Object datos[] = new Object[4];
while ([Link]()){
for (int i=0;i<4;i++){
datos[i]=[Link](i+1);
}
[Link](datos);
}
[Link]();
} catch (SQLException ex) {
[Link]([Link]());
}
}
}
v. Evento KeyReleased de txtBuscar
Antes
private void txtBuscarKeyReleased([Link] evt) {
}
Ahora
private void txtBuscarKeyReleased([Link] evt) {
BuscarDatos();
}
vi. Evento WindowOpened de frmAgenda
Antes
private void formWindowOpened ([Link] evt) {
}
Ahora
private void formWindowOpened ([Link] evt) {
Conectar();
}
vii. Evento actionPerformed (clic) de btnAgregar
Antes
private void btnAgregarActionPerformed ([Link] evt) {
}
Ahora
private void btnAgregarActionPerformed ([Link] evt) {
frmInsertar frmb = new frmInsertar(this, true);
[Link](true);
}
viii. Evento actionPerformed (clic) de btnModificar
Antes
private void btnModificarActionPerformed ([Link] evt) {
}
Ahora
private void btnModificarActionPerformed ([Link] evt) {
int nFila;
nFila = [Link]();
if (nFila>=0){
frmActualizar fActua = new frmActualizar(this,true);
sID = [Link]([Link](), 0).toString();
sNom = [Link]([Link](), 1).toString();
sNum = [Link]([Link](), 2).toString();
sCorreo = [Link]([Link](), 3).toString();
[Link](sID);
[Link](sNom);
[Link](sNum);
[Link](sCorreo);
[Link](true);
}else{
[Link](null, "Seleccione un contacto de la lista.");
}
}
ix. Evento actionPerformed (clic) de btnElim
Antes
private void btnElimActionPerformed ([Link] evt) {
}
Ahora
private void btnElimActionPerformed ([Link] evt) {
int nFila , nResp;
nFila = [Link]();
if (nFila>=0){
sID = [Link]([Link](), 0).toString();
sNom = [Link]([Link](), 1).toString();
nResp = [Link] (null, "¿Desea eliminar a
''"+sNom+"''?","Cuidado",JOptionPane.YES_NO_OPTION);
if(nResp == JOptionPane.YES_OPTION){
try {
stElim = [Link]();
sSQL = "delete from contactos where IDContacto = '"+sID+"';";
[Link](sSQL);
[Link](nFila);
} catch (SQLException ex) {
[Link]([Link]());
}
}
}else{
[Link](null, "Seleccione un contacto de la lista.");
}
}
c. En el [Link]
i. Importar clases
Antes
package prjagenda;
public class frmInsertar extends [Link]. JDialog {
Ahora
package prjagenda;
import [Link].*;
import [Link];
public class frmInsertar extends [Link]. JDialog{
ii. Declarar variables
Antes
public class frmInsertar extends [Link]. JDialog {
public frmInsertar ([Link] parent, boolean modal) {
Ahora
public class frmInsertar extends [Link]. JDialog {
Connection cnConec;
Statement stActua;
String sSQL;
String sID, sNom, sNum, sCorreo;
public frmInsertar ([Link] 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 = [Link](url, user,pass);
}catch(SQLException e){
[Link]([Link]());
}
}
iv. Evento WindowOpened de frmInsertar
Antes
private void formWindowOpened ([Link] evt) {
}
Ahora
private void formWindowOpened ([Link] evt) {
Conectar();
}
v. Evento actionPerformed (clic) de btnGuardar
Antes
private void btnGuardarActionPerformed ([Link] evt) {
}
Ahora
private void btnGuardarActionPerformed ([Link] evt) {
try {
sID = [Link]();
sNom = [Link]();
sNum = [Link]();
sCorreo = [Link]();
stActua= [Link]();
sSQL = "insert into contactos (idContacto, nombre,numero,correo) value
('"+sID+"','"+sNom+"','"+sNum+"','"+sCorreo+"');";
stActua. executeUpdate(sSQL);
[Link](null, "Los datos se grabaron correctamente.");
[Link]();
} catch (SQLException ex) {
switch ([Link]()){
case 1062:
[Link](null, "Este ID ya está siendo usado.");
break;
default:
[Link]([Link]());
break;
}
}
}
d. En el [Link]
i. Importar clases
Antes
package prjagenda;
public class frmActualizar extends [Link]. JDialog {
Ahora
package prjagenda;
import [Link].*;
import [Link];
public class frmActualizar extends [Link]. JDialog{
ii. Declarar variables
Antes
public class frmActualizar extends [Link]. JDialog {
public frmActualizar ([Link] parent, boolean modal) {
Ahora
public class frmActualizar extends [Link]. JDialog {
Connection cnConec;
Statement stActua;
String sSQL;
String sID, sNom, sNum, sCorreo;
public frmActualizar ([Link] 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 = [Link](url, user,pass);
}catch(SQLException e){
[Link]([Link]());
}
}
iv. Evento WindowOpened de frmActualizar
Antes
private void formWindowOpened ([Link] evt) {
}
Ahora
private void formWindowOpened ([Link] evt) {
Conectar();
}
v. Evento actionPerformed (clic) de btnActua
Antes
private void btnActuaActionPerformed ([Link] evt) {
}
Ahora
private void btnActuaActionPerformed ([Link] evt) {
try {
sID = [Link]();
sNom = [Link]();
sNum = [Link]();
sCorreo = [Link]();
stActua= [Link]();
sSQL = "update contactos set nombre='"+sNom+"', numero='"+sNum+"',
correo='"+sCorreo+"' where IDContacto = '"+sID+"';";
stActua. executeUpdate(sSQL);
[Link](null, " Los datos se actualizaron correctamente.");
[Link]();
} catch (SQLException ex) {
[Link]([Link]());
}
}
CAPTURAS DE RESULTADOS
AÑADIENDO CONTACTOS
BUSCANDO CONTACTOS
MODIFICANDO UN CONTACTO
ELIMINANDO UN CONTACTO