Professional Documents
Culture Documents
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:
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
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);
}
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.
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:
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
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 {}:
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:
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 {}:
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.
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:
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 {}:
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.
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);
}
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.
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:
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);
}
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
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:
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:
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);
}
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 {}:
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.
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: