You are on page 1of 26

4.5.

3 Ejemplos prcticos de operaciones con bases de datos

Para poder ejecutar cada uno de los ejemplos de ste captulo se debe realizar los siguientes
pasos:

1. Crear una tabla en la base de datos Oracle: en la base de datos Oracle (ver Anexo B,
instalacin y creacin de tablas con Oracle Database 10g Express) cree una tabla
llamada Clientes con la siguiente estructura:

Tabla 4.13 Estructura de la tabla Clientes.

Campo Tipo de Dato


nit Number
empresa varchar2(4000)
direccion varchar2(4000)
telefono varchar2(4000)
ciudad varchar2(4000)

2. Adicionar archivo .jar: para establecer la conexin entre una base de datos Oracle y
Java es necesario incluir el archivo ojdbc6.jar en la biblioteca del proyecto NetBeans
IDE activo. Cuando se cree el proyecto sitese en la opcin Bibliotecas, pulse el botn
derecho del mouse y d clic sobre Agregar archivo JAR/Carpeta, busque el archivo
ojdbc6.jar y pulse el botn Abrir. Realizando este proceso ya se pueden compilar y
ejecutar los ejemplos que a continuacin se describen. El archivo .jar llamado
ojdbc6.jar se puede descargar de la siguiente direccin electrnica:

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

a) En un nuevo proyecto llamado AplicacionesJavaBD crear un formulario JFrame con


el nombre ConectarBDOracle y realizar un programa que realice una conexin a la base
datos de Oracle y compruebe que dicha conexin sea exitosa.

Crear la interfaz de usuario

Al nuevo formulario adicinele los siguientes objetos: 1 JLabel, 1 JButton y 1


JTextField. El formulario deber visualizarse como se aprecia en la siguiente figura:

Figura 4.1 Formulario JFrame ConectarBDOracle.


Modificar propiedades de los objetos de la interfaz de usuario

Modifique las respectivas propiedades de los objetos, segn la siguiente tabla

Tabla 4.12 Propiedades a modificar en el JFrame ConectarBDOracle.

Control Propiedad Valor


JLabel1 Cambiar nombre variable lbltitulo
Editar texto (text) Comprobar conexin a la base de
datos Oracle.
Font Times New Roman, Negrita, 12
JButton1 Cambiar nombre variable boton
Editar texto (text) Verificar conexin
JTextField1 Cambiar nombre variable txtresultado
Editar texto (text) En blanco
JFrame Title Conexin a Oracle

La interfaz de usuario quedara como se muestra en la siguiente figura:

Figura 4.2 Interfaz de usuario ConectarBDOracle.

Escribir cdigo

Seleccione el objeto boton, pulse el botn derecho del mouse y escoja la opcin eventos,
luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonActionPerformed y escriba el siguiente cdigo entre las llaves {}:
try {
Class.forName("oracle.jdbc.OracleDriver");
}
catch(ClassNotFoundException e )
{
txtresultado.setText("No se pudo crear el puente JDBC-ODBC.");
return;
}
String ruta = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
try {
Connection conexion=DriverManager.getConnection (ruta,system,
"123456");
txtresultado.setText("Conexion exitosa a la base de Datos Oracle.... ");
}
catch(SQLException e )
{
txtresultado.setText("error en la conexion: "+e);
}

Anlisis del cdigo

En un primer bloque try se llama al mtodo forName de la clase Class para establecer
el drive que se va a utilizar, en este caso como lo que se quiere es realizar una conexin
a una base de datos Oracle se utiliza la conexin oracle.jdbc.OracleDriver. En el
bloque catch se captura la excepcin ClassNotFoundException, donde al objeto
txtresultado se le asigna el mensaje No se pudo crear el puente JDBC-ODBC., el cual
se imprimir en caso de que no se pueda cargar el driver. En caso de que no exista
problema al cargar el drive se crea una variable llamada ruta de tipo String a la cual se
le asigna las propiedades de la conexin para la base de datos de ORACLE. Es este caso
el puente JDBC-ODBC para Oracle (jdbc:oracle:thin:@), el host o nombre del
servidor (127.0.0.1), El puerto (1521 puerto por default cuando se realiza la instalacin
de Oracle) y el nombre del servicio (XE para Oracle Express Edition). En un segundo
bloque try se crea una instancia llamada conexion de tipo Connection, al cual se le
asigna la conexin de la base de datos con la instruccin
DriverManager.getConnection (ruta,system.123456), siendo ruta la ubicacin de
la base de datos, system el usuario y 123456 la contrasea de la base de datos. Al objeto
txtresultado se le asigna el mensaje Conexin exitosa a la base de datos Oracle. En
el bloque catch se captura la excepcin SQLException, donde al objeto txtresultado se
le asigna el mensaje Error en la conexion.

Nota: Si en el cdigo se aprecian errores, es posible que NetBeans IDE no reconozca


algunas de las clases utilizadas, d clic derecho sobre el mouse y seleccione la opcin
reparar importaciones o simplemente pulse Ctrl + Maysculas +I.

Ejecutar el proyecto

Seleccione el formulario JFrame y pulse el botn derecho del mouse y escoja la opcin
Ejecutar archivo o simplemente pulse Maysculas + F6. Al pulsar el botn Verificar
conexin, se visualizar una figura similar a la siguiente:

Figura 4.3 Verificacin de conexin exitosa a Oracle.


b) En el mismo proyecto llamado AplicacionesJavaBD crear un formulario JFrame con
el nombre ConsultarClientesOracle y escribir un programa que permita visualizar los
registros de la tabla clientes de la base datos de ORACLE.

Observacin: A partir de este ejemplo se crear una clase llamada ConectarBD, la cual
contendr el cdigo necesario para realizar la conexin a la base de datos de Oracle. En el
proyecto AplicacionesjavaBD sitese sobre la carpeta Paquetes fuentes y en el paquete de
nombre aplicacionesjavabd pulse el botn derecho del mouse y seleccione Nuevo luego
d clic en la opcin Java Class; como Nombre de clase escriba ConectarBD y pulse el
botn Terminar. Elimine el cdigo generado y escriba lo siguiente:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ConectarBD {
public Connection conexion;
public PreparedStatement sentencia;
public ConectarBD(){
String ruta = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
try {
Class.forName("oracle.jdbc.OracleDriver");
conexion=DriverManager.getConnection(ruta,"system","123456");
}
catch(ClassNotFoundException e )
{
System.out.println("Error:"+e);
}
catch(SQLException e )
{
System.out.println("Error en la conexion: "+e);
}
}
public Connection getConexion()
{
return conexion;
}
public void setConexion(Connection conexion)
{
this.conexion = conexion;
}
}

Se importaron los paquetes para las clases que se utilizaron. Adems se crearon dos
instancias: conexion de tipo Connection (para establecer la conexin) y sentencia de tipo
PreparedStatement (para declarar la conexin). Adicionalmente se crearon dos mtodos
getConexion y setConexion que permitirn establecer la conectividad con la clase. El resto
de cdigo es similar al ejemplo anterior.
Crear la interfaz de usuario

Al nuevo formulario adicinele los siguientes objetos: 1 JLabel, 1 JButton y 1 JTable. El


formulario deber visualizarse como se aprecia en la siguiente figura:

Figura 4.4 Formulario JFrame ConsultarClientesOracle.

Modificar propiedades de los objetos de la interfaz de usuario

Modifique las respectivas propiedades de los objetos, segn la siguiente tabla

Tabla 4.13 Propiedades a modificar en el JFrame ConsultarClientesOracle.

Control Propiedad Valor


JLabel1 Cambiar nombre variable lbltitulo
Editar texto (text) Consultar informacin de Clientes.
Font Times New Roman, Negrita, 12
JButton1 Cambiar nombre variable boton
Editar texto (text) Realizar Consulta
JTable1 Cambiar nombre variable datosclientes
Model Eliminar cada una de las columnas
que aparecen por omisin.
JFrame Title Consultar Clientes

La interfaz de usuario quedara como se muestra en la siguiente figura:

Figura 4.14 Interfaz de usuario ConsultarClientesOracle.


Escribir cdigo

Seleccione el objeto boton, pulse el botn derecho del mouse y escoja la opcin eventos,
luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonActionPerformed y escriba el siguiente cdigo entre las llaves {}:

DefaultTableModel modelo=new DefaultTableModel();


this.datosclientes.setModel(modelo);
ConectarBD conexion=new ConectarBD();
Statement sentencia;
try {
sentencia=conexion.getConexion().createStatement();
ResultSet resultado=sentencia.executeQuery("select * from clientes");
ResultSetMetaData campos = resultado.getMetaData();
int cantidadColumnas = campos.getColumnCount();
for (int i = 1; i <= cantidadColumnas; i++)
{
modelo.addColumn(campos.getColumnLabel(i));
}
while (resultado.next())
{
Object[] fila = new Object[cantidadColumnas];
for (int i = 0; i < cantidadColumnas; i++)
{
fila[i]=resultado.getObject(i+1);
}
modelo.addRow(fila);
}
resultado.close();
conexion.getConexion().close();
}
catch(SQLException e )
{
JOptionPane.showMessageDialog(this,"Error SQL:"+e,"Informacin"
,JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error:"+e,"Informacin"
,JOptionPane.INFORMATION_MESSAGE);
}

Anlisis del cdigo

Inicialmente se crea una instancia llamada modelo de tipo DefaultTableModel ( clase


que implementa una tabla modelo que permite aadir, modificar y borrar datos), la cual
se le asigna al objeto JTable datosclientes por intermedio del mtodo setModel.
Adems se crea una instancia conexion de tipo ConectarBD y otra instancia sentencia
de tipo Statement. En el bloque try al objeto sentencia se le asigna la conexin a la
base de datos utilizando el mtodo getConexion() de la instancia conexin y el mtodo
createStatement (). Por otro lado se crea un objeto resultado de tipo ResultSet a la
cual se le asigna la sentencia SQL "select * from clientes" mediante el mtodo
executeQuery de la interfaz Statement, tambin se define un objeto campos de tipo
ResultSetMetaData para obtener los nombres de los campos de la tabla clientes por
intermedio del mtodo getMetaData(), as como una variable llamada
cantidadColumnas a la cual se le asigna la cantidad de campos que contiene la tabla
clientes por intermedio del mtodo getColumnCount().
En un primer ciclo for se asigna en la primera fila del objeto modelo cada uno de los
nombres de los campos (getColumnLabel()) pertenecientes a la tabla clientes utilizando
el mtodo addColumn. En un ciclo while se recorrer cada uno de los registros de la
tabla clientes utilizando el mtodo next () de la interfaz ResultSet. Por otro lado se
define un arreglo llamado fila de tipo Object al cual se le asigna la cantidad de
columnas de la tabla clientes. En un ciclo for se le va asignando al objeto fila los
valores que contiene cada registro de la tabla clientes por intermedio del mtodo
getObject() y utilizando el mtodo addRow() se adiciona cada registro al objeto JTable
modelo. Al salir del ciclo while se cierran los objetos resultado y
conexin.getConexion() utilizando el mtodo close ().
En un primer bloque catch se captura la excepcin SQLException, que se ejecutar
cuando existan errores en las sentencias SQL y por ltimo en un segundo bloque catch
se captura la excepcin Exception, que se ejecutar cuando ocurran problemas de E/S.

Nota: Si en el cdigo se aprecian errores, es posible que NetBeans IDE no reconozca


algunas de las clases utilizadas, d clic derecho sobre el mouse y seleccione la opcin
reparar importaciones o simplemente pulse Ctrl + Maysculas +I.

Ejecutar el proyecto

Seleccione el formulario JFrame y pulse el botn derecho del mouse y escoja la opcin
Ejecutar archivo o simplemente pulse Maysculas + F6. Al pulsar el botn Realizar
consulta, se visualizar una figura similar a la siguiente:

Figura 4.15 Consulta de registros de la tabla clientes.


c) En el mismo proyecto llamado AplicacionesJavaBD cree un nuevo formulario JFrame
con el nombre ConsultaSQLBD y elaborar un programa que permita escribir y ejecutar
sentencias SQL desde un campo de texto y visualizar los resultado en una cuadrcula.

Crear la interfaz de usuario

Al nuevo formulario adicinele los siguientes objetos: 2 JLabel, 1 JTextArea, 1 JButton


y 1 JTable. El formulario deber visualizarse como se aprecia en la siguiente figura:

Figura 4.16 Formulario JFrame ConsultaSQLBD.

Modificar propiedades de los objetos de la interfaz de usuario

Modifique las respectivas propiedades de los objetos, segn la siguiente tabla

Tabla 4.14 Propiedades a modificar en el JFrame ConsultaSQLBD.

Control Propiedad Valor


JLabel1 Cambiar nombre variable lbltitulo
Editar texto (text) Consultar informacin mediante
sentencias SQL.
Font Times New Roman, Negrita, 12
JLabel2 Cambiar nombre variable lblsql
Editar texto (text) Digite sentencia SQL:
JTextArea1 Cambiar nombre variable txtsql
Editar texto (text) Dejar en blanco
JButton1 Cambiar nombre variable boton
Editar texto (text) Ejecutar
JTable1 Cambiar nombre variable datosclientes
Model Eliminar cada una de las columnas
que aparecen por omisin.
JFrame Title Ejecutar sentencias SQL

La interfaz de usuario quedara como se muestra en la siguiente figura:


Figura 4.17 Interfaz de usuario ConsultaSQLBD.

Escribir cdigo

Seleccione el objeto boton, pulse el botn derecho del mouse y escoja la opcin eventos,
luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonActionPerformed y escriba el siguiente cdigo entre las llaves {}:

DefaultTableModel modelo=new DefaultTableModel();


this.datosclientes.setModel(modelo);
ConectarBD conexion=new ConectarBD();
String codigo=txtsql.getText();
try {
Statement sentencia=conexion.getConexion().createStatement();
ResultSet resultado=sentencia.executeQuery(codigo);
ResultSetMetaData campos = resultado.getMetaData();
int cantidadColumnas = campos.getColumnCount();
for (int i = 1; i <= cantidadColumnas; i++)
{
modelo.addColumn(campos.getColumnLabel(i));
}
while (resultado.next())
{
Object[] fila = new Object[cantidadColumnas];
for (int i = 0; i < cantidadColumnas; i++)
{
fila[i]=resultado.getObject(i+1);
}
modelo.addRow(fila);
}
resultado.close();
conexion.getConexion().close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error:"+e,"Informacin"
,JOptionPane.INFORMATION_MESSAGE);
}
Anlisis del cdigo

Lo primero que se realizo fue crear una instancia llamada conexion de la clase
ConectarBD, como tambin se cre una variable llamada codigo de tipo String a la
cual se le asigna el texto escrito en el objeto txtsql por intermedio del mtodo getText().
Se utiliz el mtodo getconexion de la clase ConectarBD para establecer la conexin a
la base de datos y como sentencia SQL se envi el contenido del objeto codigo. Por
ltimo se utilizo el mtodo getconexion para cerrar la conexin.

Nota: Si en el cdigo se aprecian errores, es posible que NetBeans IDE no reconozca


algunas de las clases utilizadas, d clic derecho sobre el mouse y seleccione la opcin
reparar importaciones o simplemente pulse Ctrl + Maysculas +I.

Ejecutar el proyecto

Seleccione el formulario JFrame y pulse el botn derecho del mouse y escoja la opcin
Ejecutar archivo o simplemente pulse Maysculas + F6. Al escribir en el campo de texto
la sentencia SQL select * from clientes y pulsar el botn Ejecutar, se visualizar una
figura similar a la siguiente:

Figura 4.18 Ejecutar sentencias SQL desde el formulario ConsultaSQLBD.


d) En el mismo proyecto llamado AplicacionesJavaBD cree un nuevo formulario JFrame
con el nombre FiltrarClientes y disee un programa que permita filtrar la informacin
de la tabla clientes. El usuario deber poder seleccionar un campo de la tabla clientes, el
operador y escribir el criterio de filtrado, adems de visualizar los resultado en una
cuadrcula.

Crear la interfaz de usuario

Al nuevo formulario adicinele los siguientes objetos: 5 JLabel, 2 JComboBox, 1


JButton, 1 JTextField y 1 JTable. El formulario deber visualizarse como se aprecia en la
siguiente figura:

Figura 4.19 Formulario JFrame FiltrarClientes.

Modificar propiedades de los objetos de la interfaz de usuario

Modifique las respectivas propiedades de los objetos, segn la siguiente tabla

Tabla 4.15 Propiedades a modificar en el JFrame FiltrarClientes.

Control Propiedad Valor


JLabel1 Cambiar nombre variable lbltitulo
Editar texto (text) Filtrar informacin Clientes.
Font Times New Roman, Negrita, 12
JLabel2 Cambiar nombre variable lblcampos
Editar texto (text) Campos
JLabel3 Cambiar nombre variable lbloperadores
Editar texto (text) Operador
JLabel4 Cambiar nombre variable lblcriterio
Editar texto (text) Criterio
JLabel5 Cambiar nombre variable lblresultado
Editar texto (text) Resultado obtenido
JComboBox1 Cambiar nombre variable listacampo
Model Nit, empresa, direccin, telfono,
ciudad
JComboBox2 Cambiar nombre variable listaoperadores
Model =,>,>=,<,<=,like
JTextField1 Cambiar nombre variable txtcriterio
Editar texto (text) En blanco
JButton1 Cambiar nombre variable boton
Editar texto (text) Ejecutar
JTable1 Cambiar nombre variable datosclientes
Model Eliminar cada una de las columnas
que aparecen por omisin.
JFrame Title Ejecutar sentencias SQL

La interfaz de usuario quedara como se muestra en la siguiente figura:

Figura 4.20 Interfaz de usuario FiltrarClientes.

Escribir cdigo

Seleccione el objeto boton, pulse el botn derecho del mouse y escoja la opcin eventos,
luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonActionPerformed y escriba el siguiente cdigo entre las llaves {}:

DefaultTableModel modelo=new DefaultTableModel();


this.datosclientes.setModel(modelo);
ConectarBD conexion=new ConectarBD();
String campo= listacampos.getSelectedItem().toString();
String operador=listaoperadores.getSelectedItem().toString();
String criterio=txtcriterio.getText();
String busqueda="SELECT * FROM clientes where "+campo+" "+operador+"'"+criterio+"'";
try {
Statement sentencia=conexion.getConexion().createStatement();
ResultSet resultado=sentencia.executeQuery(busqueda);
ResultSetMetaData campos = resultado.getMetaData();
int cantidadColumnas = campos.getColumnCount();
for (int i = 1; i <= cantidadColumnas; i++)
{
modelo.addColumn(campos.getColumnLabel(i));
}
while (resultado.next())
{
Object[] fila = new Object[cantidadColumnas];
for (int i = 0; i < cantidadColumnas; i++)
{
fila[i]=resultado.getObject(i+1);
}
modelo.addRow(fila);
}
resultado.close();
conexion.getConexion().close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error:"+e,"Informacin",
JOptionPane.INFORMATION_MESSAGE);
}

Anlisis del cdigo

Los cambios en el cdigo con respecto al ejercicio anterior estn resaltados.


Se crearon cuatro variables de tipo String: campo a la que se le asigna el campo
seleccionado del objeto listacampos por intermedio del mtodo
getSelectedItem.toString(); operador a la que se le asigna el operador seleccionado
del objeto listaoperadores; criterio a la cual se le asigna el contenido del objeto
txtcriterio y busqueda a la cual se le asigna la sentencia SQL select * from clientes
where concatenado con los valores de campo, operador y criterio. Como sentencia
SQL se envi el contenido del objeto busqueda.

Nota: Si en el cdigo se aprecian errores, es posible que NetBeans IDE no reconozca


algunas de las clases utilizadas, d clic derecho sobre el mouse y seleccione la opcin
reparar importaciones o simplemente pulse Ctrl + Maysculas +I.

Ejecutar el proyecto

Seleccione el formulario JFrame y pulse el botn derecho del mouse y escoja la opcin
Ejecutar archivo o simplemente pulse Maysculas + F6. Si se selecciona como campo
ciudad, como operador like y como criterio se escribe B%, se debera mostrar todos los
clientes cuya ciudad comience con la letra B. Al pulsar el botn Ejecutar se visualizar una
figura similar a la siguiente:
Figura 4.21 Filtrado de informacin en la tabla clientes.

e) En el mismo proyecto llamado AplicacionesJavaBD cree un nuevo formulario JFrame


con el nombre InsertarClientes y cree un programa que permita insertar registros en la
tabla clientes.

Crear la interfaz de usuario

Al formulario agrguele los siguientes objetos: 6 JLabel, 1 JButton y 5 JTextField. El


formulario deber visualizarse como se aprecia en la siguiente figura:

Figura 4.22 Formulario JFrame InsertarClientes.

Modificar propiedades de los objetos de la interfaz de usuario

Modifique las respectivas propiedades de los objetos, segn la siguiente tabla


Tabla 4.16 Propiedades a modificar en el JFrame FiltrarClientes.

Control Propiedad Valor


JLabel1 Cambiar nombre variable lbltitulo
Editar texto (text) Insertar registros en la tabla Clientes.
Font Times New Roman, Negrita, 12
JLabel2 Cambiar nombre variable lblnit
Editar texto (text) Nit:
JLabel3 Cambiar nombre variable lblempresa
Editar texto (text) Empresa:
JLabel4 Cambiar nombre variable lbldireccion
Editar texto (text) Direccin:
JLabel5 Cambiar nombre variable lbltelefon
Editar texto (text) Telfono:
JLabel6 Cambiar nombre variable lblciudad
Editar texto (text) Ciudad:
JTextField1 Cambiar nombre variable txtnit
Editar texto (text) En blanco
JTextField2 Cambiar nombre variable txtempresa
Editar texto (text) En blanco
JTextField3 Cambiar nombre variable txtdireccion
Editar texto (text) En blanco
JTextField4 Cambiar nombre variable txttelefono
Editar texto (text) En blanco
JTextField5 Cambiar nombre variable txtciudad
Editar texto (text) En blanco
JButton1 Cambiar nombre variable boton
Editar texto (text) Insertar registro
JFrame Title Insertar registros

La interfaz de usuario quedara como se muestra en la siguiente figura:

Figura 4.23 Interfaz de usuario InsertarClientes.


Escribir cdigo

Seleccione el objeto boton, pulse el botn derecho del mouse y escoja la opcin eventos,
luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonActionPerformed y escriba el siguiente cdigo entre las llaves {}:

try {
ConectarBD conexion=new ConectarBD();
String nit = txtnit.getText();
String empresa = txtempresa.getText();
String direccion = txtdireccion.getText();
String telefono = txttelefono.getText();
String ciudad = txtciudad.getText();
String instruccion= "insert into clientes values(?,?,?,?,?)";
conexion.sentencia=conexion.getConexion().prepareStatement(instruccion);
conexion.sentencia.setString(1,nit);
conexion.sentencia.setString(2, empresa);
conexion.sentencia.setString(3, direccion);
conexion.sentencia.setString(4, telefono);
conexion.sentencia.setString(5, ciudad);
conexion.sentencia.execute();
JOptionPane.showMessageDialog(this,"Registro Insertado","Informacin",
JOptionPane.INFORMATION_MESSAGE);
conexion.getConexion().close();
}
catch( SQLException e )
{
JOptionPane.showMessageDialog(this,"Error SQL"+e,"Informacin"
,JOptionPane.ERROR_MESSAGE);
}
catch( Exception e )
{
JOptionPane.showMessageDialog(this,"Error del sistema"+e,
"Informacin",JOptionPane.ERROR_MESSAGE);
}

Anlisis del cdigo

En el bloque try se crean cinco variables de tipo String (nit, empresa, direccion,
telefono, ciudad) a las cuales se les asigna los valores de los objetos txtnit, txtempresa,
txtdireccin, txttelefono, txtciudad respectivamente. Por otro lado se crea una
instancia llamada instruccion a la cual se le asigna la sentencia de insercin SQL insert
into clientes values(?,?,?,?,?). En los signos de interrogacin irn los valores concretos
que se vayan a insertar. A la instancia sentencia de tipo PreparedStatement (es una
sentencia SQL de base de datos precompilada, adecuada cuando se va a ejecutar la
misma sentencia SQL con distintos valores muchas veces) de la clase ConectarBD se le
asigna el cdigo SQL de la variable instruccion. Utilizando el mtodo setString se
insertar los respectivos valores al registro. El primer parmetro es el nmero del
interrogante y el segundo valor es lo que se desea insertar y por ltimo se realiza la
insercin del registro en la tabla por intermedio del mtodo execute(), adems se enva
un mensaje de comprobacin del registro insertado y se cierra la conexin. Por los
bloque catch se implementa las excepciones Exception y SQLExcepction.

Nota: Si en el cdigo se aprecian errores, es posible que NetBeans IDE no reconozca


algunas de las clases utilizadas, d clic derecho sobre el mouse y seleccione la opcin
reparar importaciones o simplemente pulse Ctrl + Maysculas +I.

Ejecutar el proyecto

Seleccione el formulario JFrame y pulse el botn derecho del mouse y escoja la opcin
Ejecutar archivo o simplemente pulse Maysculas + F6. Si se digitan los valores que se
muestran en la siguiente figura:

Figura 4.24 Valores a insertar en la tabla clientes.

Al pulsar el botn Insertar Registro, se observar la siguiente figura:

Figura 4.25 Confirmacin de insercin de los datos en la tabla clientes.


f) En el mismo proyecto llamado AplicacionesJavaBD cree un nuevo formulario JFrame
con el nombre ModificarClientes y elabore un programa que permita modificar un
registro especfico de la tabla clientes.

Crear la interfaz de usuario

Al nuevo formulario adicinele los siguientes objetos: 6 JLabel, 2 JButton, 5 JTextField.


El formulario deber visualizarse como se aprecia en la siguiente figura:

Figura 4.26 Formulario JFrame ModificarClientes.

Modificar propiedades de los objetos de la interfaz de usuario

Modifique las respectivas propiedades de los objetos, segn la siguiente tabla:

Tabla 4.17 Propiedades a modificar en el JFrame ModificarClientes.

Control Propiedad Valor


JLabel1 Cambiar nombre variable lbltitulo
Editar texto (text) Modificar un registro de la tabla
Clientes.
Font Times New Roman, Negrita, 12
JLabel2 Cambiar nombre variable lblnit
Editar texto (text) Nit:
JLabel3 Cambiar nombre variable lblempresa
Editar texto (text) Empresa:
JLabel4 Cambiar nombre variable lbldireccion
Editar texto (text) Direccin:
JLabel5 Cambiar nombre variable lbltelefon
Editar texto (text) Telfono:
JLabel6 Cambiar nombre variable lblciudad
Editar texto (text) Ciudad:
JTextField1 Cambiar nombre variable txtnit
Editar texto (text) En blanco
JTextField2 Cambiar nombre variable txtempresa
Editar texto (text) En blanco
JTextField3 Cambiar nombre variable txtdireccion
Editar texto (text) En blanco
JTextField4 Cambiar nombre variable txttelefono
Editar texto (text) En blanco
JTextField5 Cambiar nombre variable txtciudad
Editar texto (text) En blanco
JButton1 Cambiar nombre variable botonbuscar
Editar texto (text) Nit a buscar
JButton2 Cambiar nombre variable botonguardar
Editar texto (text) Guardar Modificaciones
JFrame Title Modificar Registros

La interfaz de usuario quedara como se muestra en la siguiente figura:

Figura 4.27 Interfaz de usuario ModificarClientes.

Escribir cdigo

a) Seleccione el objeto botonbuscar, pulse el botn derecho del mouse y escoja la opcin
eventos, luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonbuscarActionPerformed y escriba el siguiente cdigo entre las llaves {}:
try {
String criterio= txtnit.getText();
ConectarBD conexion=new ConectarBD();
Statement sentencia=conexion.getConexion().createStatement();
ResultSet resultado=sentencia.executeQuery("select * from clientes where
nit='"+criterio+"'");
while (resultado.next())
{
txtempresa.setText(""+resultado.getString("empresa"));
txtdireccion.setText(""+resultado.getString("direccion"));
txttelefono.setText(""+resultado.getString("telefono"));
txtciudad.setText(""+resultado.getString("ciudad"));
}
resultado.close();
conexion.getConexion().close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error:"+e,"Informacin",
JOptionPane.INFORMATION_MESSAGE);
}

Anlisis del cdigo

Se crea una variable de tipo String llamada criterio a la cual se le asigna el contenido
del objeto txtnit y al objeto resultado se le asigna la sentencia SQL select * from
clientes where nit concatenado con el valor de la variable criterio. Con un ciclo while
se cargar la informacin de cada uno de los campos del registro encontrado por
intermedio del mtodo getString() en los respectivos objetos JTextField.

b) Seleccione el objeto botonguardar, pulse el botn derecho del mouse y escoja la opcin
eventos, luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonguardarActionPerformed y escriba el siguiente cdigo entre las llaves {}:
try{
ConectarBD conexion=new ConectarBD();
String instruccion= "Update clientes set empresa=?,direccion=?,telefono=?,ciudad=?
where nit='" +txtnit.getText()+"'";
conexion.sentencia=conexion.getConexion().prepareStatement(instruccion);
conexion.sentencia.setString(1, txtempresa.getText());
conexion.sentencia.setString(2, txtdireccion.getText());
conexion.sentencia.setString(3, txttelefono.getText());
conexion.sentencia.setString(4, txtciudad.getText());
conexion.sentencia.execute();
JOptionPane.showMessageDialog(this,"Registro Modificado","Informacin",
JOptionPane.INFORMATION_MESSAGE);
conexion.getConexion().close();
}
catch(SQLException e)
{
JOptionPane.showMessageDialog(this,"Error SQL:"+e,"Informacin",
JOptionPane.INFORMATION_MESSAGE);
}
Anlisis del cdigo

En el bloque try se crea una instancia llamada instruccion a la cual se le asigna la


sentencia de actualizacin SQL Update clientes set
empresa=?,direccion=?,telefono=?,ciudad=? where nit= concatenado con el valor del
objeto txtnit. En los signos de interrogacin irn los valores concretos que se vayan a
insertar. A la instancia sentencia de tipo PreparedStatement de la clase ConectarBD
se le asigna el cdigo SQL de la variable instruccion. Utilizando el mtodo setString se
modifican los respectivos valores al registro. El primer parmetro es el nmero del
interrogante y el segundo valor es lo que se desea modificar y por ltimo se realiza la
modificacin del registro en la tabla por intermedio del mtodo execute(), adems se
enva un mensaje de comprobacin de la modificacin del registro y se cierra la
conexin. Por los bloque catch se implementa las excepciones SQLExcepction.

Nota: Si en el cdigo se aprecian errores, es posible que NetBeans IDE no reconozca


algunas de las clases utilizadas, d clic derecho sobre el mouse y seleccione la opcin
reparar importaciones o simplemente pulse Ctrl + Maysculas +I.

Ejecutar el proyecto

Seleccione el formulario JFrame y pulse el botn derecho del mouse y escoja la opcin
Ejecutar archivo o simplemente pulse Maysculas + F6. Si se escribe en el objeto txtnit
el valor uno (1) y se pulsa el botn Nit a buscar, se debera mostrar la informacin
perteneciente al cliente con nit 1. Dependiendo de los datos del registro se podra visualizar
una figura similar a la siguiente:

Figura 4.28 Valores del cliente con nit 1.

Si se cambia alguno de los valores de los campos de texto y se pulsa el botn Guardar
modificaciones, se aprecia el mensaje de modificacin del registro como se ve en la
siguiente figura:

Figura 4.29 Mensaje al modificar un registro de la tabla clientes.


g) En el mismo proyecto llamado AplicacionesJavaBD cree un nuevo formulario JFrame
con el nombre EliminarClientes y elabore un programa que permita eliminar un
registro especfico de la tabla clientes.

Crear la interfaz de usuario

Al nuevo formulario adicinele los siguientes objetos: 6 JLabel, 2 JButton, 5 JTextField.


El formulario deber visualizarse como se aprecia en la siguiente figura:

Figura 4.30 Formulario JFrame EliminarClientes.

Modificar propiedades de los objetos de la interfaz de usuario

Modifique las respectivas propiedades de los objetos, segn la siguiente tabla

Tabla 4.18 Propiedades a modificar en el JFrame EliminarClientes.

Control Propiedad Valor


JLabel1 Cambiar nombre variable lbltitulo
Editar texto (text) Eliminar un registro de la tabla
Clientes.
Font Times New Roman, Negrita, 12
JLabel2 Cambiar nombre variable lblnit
Editar texto (text) Nit:
JLabel3 Cambiar nombre variable lblempresa
Editar texto (text) Empresa:
JLabel4 Cambiar nombre variable lbldireccion
Editar texto (text) Direccin:
JLabel5 Cambiar nombre variable lbltelefon
Editar texto (text) Telfono:
JLabel6 Cambiar nombre variable lblciudad
Editar texto (text) Ciudad:
JTextField1 Cambiar nombre variable txtnit
Editar texto (text) En blanco
JTextField2 Cambiar nombre variable txtempresa
Editar texto (text) En blanco
JTextField3 Cambiar nombre variable txtdireccion
Editar texto (text) En blanco
JTextField4 Cambiar nombre variable txttelefono
Editar texto (text) En blanco
JTextField5 Cambiar nombre variable txtciudad
Editar texto (text) En blanco
JButton1 Cambiar nombre variable botonbuscar
Editar texto (text) Nit a buscar
JButton2 Cambiar nombre variable botoneliminar
Editar texto (text) Guardar Modificaciones
JFrame Title Modificar Registros
La interfaz de usuario quedara como se muestra en la siguiente figura:

Figura 4.31 Interfaz de usuario EliminarClientes.

Escribir cdigo

Seleccione el objeto botonbuscar, pulse el botn derecho del mouse y escoja la opcin
eventos, luego Action y d clic sobre actionPerformed para visualizar el mtodo
botonbuscarActionPerformed y escriba el siguiente cdigo entre las llaves {}:

try {
String criterio= txtnit.getText();
ConectarBD conexion=new ConectarBD();
Statement sentencia=conexion.getConexion().createStatement();
ResultSet resultado=sentencia.executeQuery("select * from clientes where
nit='"+criterio+"'");
txtempresa.setEditable(false);
txtdireccion.setEditable(false);
txttelefono.setEditable(false);
txtciudad.setEditable(false);
while (resultado.next())
{
txtempresa.setText(""+resultado.getString("empresa"));
txtdireccion.setText(""+resultado.getString("direccion"));
txttelefono.setText(""+resultado.getString("telefono"));
txtciudad.setText(""+resultado.getString("ciudad"));
}
resultado.close();
conexion.getConexion().close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error:"+e,"Informacin",
JOptionPane.INFORMATION_MESSAGE);
}

Anlisis del cdigo

Se crea una variable de tipo String llamada criterio a la cual se le asigna el contenido
del objeto txtnit y al objeto resultado se le asigna la sentencia SQL select * from
clientes where nit concatenado con el valor de la variable criterio. Utilizando el
mtodo setEditable como false se deshabilitan cada uno de los objetos JTextField para
que no se pueda editar la informacin de stos. Con un ciclo while se cargar la
informacin de cada uno de los campos del registro encontrado por intermedio del
mtodo getString() en los respectivos objetos JTextField.

Seleccione el objeto botoneliminar, pulse el botn derecho del mouse y escoja la opcin
eventos, luego Action y d clic sobre actionPerformed para visualizar el mtodo
botoneliminarActionPerformed y escriba el siguiente cdigo entre las llaves {}:

int seleccion = JOptionPane.showOptionDialog(this,"Desea ELIMINAR EL REGISTRO


(Si/No)", "Seleccione una opcin",JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,null,new Object[] { "Si", "No"},"Si");
if((seleccion + 1)==1)
{
try
{
ConectarBD conexion=new ConectarBD();
String instruccion= "Delete clientes where nit='" +txtnit.getText() +"'";
conexion.sentencia=conexion.getConexion().prepareStatement(instruccion);
conexion.sentencia.execute();
JOptionPane.showMessageDialog(this,"Registro Eliminado","Informacin",
JOptionPane.INFORMATION_MESSAGE);
conexion.getConexion().close();
}
catch(SQLException e)
{
JOptionPane.showMessageDialog(this,"Error SQL:"+e,"Informacin",
JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(this,"Registro NO ELIMINADO","Informacin",
JOptionPane.INFORMATION_MESSAGE);
}

Anlisis del cdigo

Se crea una variable llamada seleccion de tipo int a la cual se le asigna la ventana de
dialogo SI/NO de tipo JOptionPane. Utilizando la estructura de decisin if se vlida si
el valor de la variable seleccion+1 es igual a 1. Si se cumple la condicin en el bloque
try se crea la instancia conexion de tipo ConectarBD(), adems se crea una variable
llamada instruccion de tipo String a la que se le asigna la sentencia SQL Delete
clientes where nit= concatenado con el valor del objeto txtnit. Al objeto sentencia de
la clase ConectarBD se le asigna la conexin a la base de datos y se enva el valor de la
variable instruccion por intermedio del mtodo prepareStatement y se ejecuta por
intermedio de execute(). En una ventana JOPtionPane se confirma la eliminacin del
registro y se cierra la conexin. Por los bloque catch se implementa las excepciones
Exception y SQLExcepction.

Nota: Si en el cdigo se aprecian errores, es posible que NetBeans IDE no reconozca


algunas de las clases utilizadas, d clic derecho sobre el mouse y seleccione la opcin
reparar importaciones o simplemente pulse Ctrl + Maysculas +I.

Ejecutar el proyecto

Seleccione el formulario JFrame y pulse el botn derecho del mouse y escoja la opcin
Ejecutar archivo o simplemente pulse Maysculas + F6. Si se digitan los valores que se
muestran en la siguiente figura:

Figura 4.32 Visualizacin del registro a eliminar.

Al pulsar el botn Eliminar Registro?, se observar la siguiente figura:

Figura 4.33 Confirmacin de eliminacin del registro en la tabla clientes.


Si se pulsa el botn No, se visualizar la siguiente figura:

Figura 4.34 Confirmacin de registro no eliminado de la tabla clientes.

You might also like