Está en la página 1de 25

TEMA: CONEXIN A BASE DE DATOS

Contenido
Conociendo ya los elementos de manejo de funciones, instancias de clases, ases de datos y un
!oco del len"uaje S#$, %amos a &eali'a& la cone(i)n ent&e *a%a y la ase de datos de Mic&osoft
Access, a !a&ti& de ODBC +O!en DataBase Conecti%ity,
Desa&&olla& !&o"&amas en *a%a -ue lo"&en una cone(i)n con una ase de datos de Mic&osoft
Access a !a&ti& de Odc,de i"ual fo&ma a!&ende& a mani!ula& datos a t&a%.s de *A/A0

Base de datos
Podemos definir una base de datos
como un conjunto de informacin
almacenada en memoria auxiliar
que permite acceso directo y un
conjunto de programas que
manipulan esos datos.
Encontramos bases de datos de
diferentes precios, tamaos y la
seleccin de la base idnea
depender de lo que se pretenda
hacer.
Entre las bases de datos
encontramos por ejemplo: icrosoft
!ql !er"er, y!#$, Postgres!#$,
%racle, !y&ase, 'nterbase, !#$$ite,
etc.
El lenguaje
SQL
El lenguaje de consulta estructurado
(!#$) es un lenguaje de base de
datos normali*ado, utili*ado por los
diferentes motores de bases de
datos para reali*ar determinadas
operaciones sobre los datos o sobre
la estructura de los mismos. Pero
como sucede con cualquier sistema
de normali*acin hay excepciones
para casi todo+ de hecho, cada
motor de bases de datos tiene sus
peculiaridades y lo hace diferente de
otro motor, por lo tanto, el lenguaje
!#$ normali*ado (,-!') no nos
ser"ir para resol"er todos los
problemas, aunque si se puede
asegurar que cualquier sentencia
escrita en ,-!' ser interpretable
por cualquier motor de datos.
Comando y su Descripcin
!E$E./ 0tili*ado para consultar
registros de la base de datos que
satisfagan un criterio determinado
'-!E1/ 0tili*ado para cargar lotes
de datos en la base de datos en una
2nica operacin.
0P3,/E 0tili*ado para modificar los
"alores de los campos y registros
especificados
3E$E/E 0tili*ado para eliminar
registros de una tabla de una base
de datos
Gua de
conexin
$a siguiente informacin, pretende
mostrar el proceso secuencial para
poder reali*ar la interaccin con el
lenguaje ja"a (empleando Netbeans
como '3E) y una base de datos
(icrosoft ,ccess)
Paso 1.
$o primero que debemos tener listo
es una base de datos, en esta
ocasin la base de ejemplo esta en
icrosoft ,ccess, el nombre de la
base es: BD_EJEMPLO y la tabla
con la que se trabajar es:
EMPLEADO.
$a estructura de la tabla
EP$E,3% es la siguiente:
Paso 2.
,hora reali*aremos la conexin
%3&., para ello haremos lo
siguiente:
Para Windows XP
o Para crear una conexin a la
base de datos haga clic en
'nicio4 .onfiguracin 4Panel
de .ontrol45erramientas
,dministrati"as4%r6genes de
3atos (%3&.)
Para En Windows vista o
7, se resentar! en e"
#en$ %erra#ientas
ad#inistrativas o estar!
dire&ta#ente en e" ane"
de &ontro"
,l dar doble clic, se desplegar una
"entana como la siguiente:
o 3e .lic en el botn
A're'ar7
o !e mostrar una "entana
con una lista de
controladores de %3&.,
seleccione el controlador
para icrosoft ,ccess 3ri"er
(8.mdb, 8.accdb) y de clic en
el botn (ina"i)ar.
o $a siguiente "entana
permitir establecer el
-ombre del origen de datos:
&one*ion_e+e#"o
o 1uta de ubicacin de la &ase
de 3atos. Para establecer la
ubicacin de la base de
datos de clic en el botn
,e"e&&ionar7 (8)
(8) !i la ubicacin de la base es
hacia un ser"idor o una
computadora remota. (!ituaciones
donde la base no se encuentra en la
misma donde corre el sistema).
3ebe presionar el botn -ed y
luego identificar la ruta donde corre
la aplicacin.
3espu9s de ubicar la base de .lic
en el botn A&etar en : ocasiones.
;) 3espu9s de ubicar la &ase de
3atos
<) 3espu9s de Establecer -ombre
de conexin
:) Para aceptar la conexin en el
%rigen de 3atos
Paso ..
,hora reali*aremos el proyecto en
-etbeans, para ello,
seleccionaremos la .ategor6a JA/A
y luego Java A"i&ation
.olocar un nombre al proyecto y la
ruta donde se desea almacenar y
luego clic en el botn ='-'!5
Esta es la estructura inicial
de nuestro proyecto:
Paso 0.
,dicionaremos una >,?,
.$,!! y la nombraremos
c.onexion.
Para esto, damos clic
derecho en el nombre del
proyecto y luego "amos a
NEW, y seleccionamos JA/A
1LA,
,hora establecemos el
nombre de la clase y el
paquete al que pertenecer:
En esta clase colocaremos el
siguiente cdigo:
pri"ate .onnection cnx @ null+
pri"ate !tatement sttm @ null+
public "oid 0'3(!tring sqlcad) A
try A
cnx @ 3ri"eranager.get.onnection(Bjdbc:odbc:conexionCprogra:B)+
sttm @ cnx.create!tatement(1esult!et./DPEC!.1%$$C!E-!'/'?E,
1esult!et..%-.01C1E,3C%-$D)+
sttm.execute0pdate(sqlcad)+
E catch (Exception e) A
!ystem.out.println(BE11%1@B F e.getessage())+
E
E
.omentando el cdigo:
,hora, en &n* se est
cargando el controlador que
se obtiene de una fuente de
datos >3&3:%3&. que es lo
que se reali* en el aso 2,
para esta gu6a hemos creado
el 3-!:
$uego se crea una stt#, a
partir del m9todo
&reate,tate#ent del objeto
&n*
Por 2ltimo se ejecuta la
sentencia, y notese que
sqlcad, es el parmetro que
"iene en la declaracin del
procedimiento 0'3:
El e*e&2te3date, es un
m9todo del objeto ,tate#ent
que reali*a la accin sobre la
base de datos.
Paso 4.
,hora reali*aremos la clase
EP$E,3% donde formaremos
nuestras sentencias !#$
En ella crearemos inicialmente tres
m9todos: ,3'.'%-,1,
%3'='.,1, E$''-,1
Estructura de nuestra tabla
EP$E,3%
El cdigo inicia con la declaracin
de la clase:
8G
public class cEmpleado A
c.onexion c @ neH c.onexion()+
E
,hora crearemos una instancia a la
clase que reali*amos en el paso
anterior:
8G
public class cEmpleado A
c.onexion c @ neH c.onexion()+
E
L2e'o rea"i)are#os e" #5todo
ara adi&ionar, "o ""a#are#os
6N,E-7A-
public "oid '-!E1/,1(int codigo, !tring nombre, !tring apellido, !tring dui, double sueldo) A
c.0'3(B'-!E1/ '-/% EP$E,3%(codigo,nombre,apellido,dui,sueldo) "alues(B F codigo F B,
IB F nombre F BI,IB F apellido F BI,IB F dui F BI,B F sueldo F B)B)+
E
,lgunas consideraciones:
Para n2meros@ B F
"alor F B
.onsiderar la comilla
simple(I) para
elementos de tipo
!tring (/exto)
Para texto @ IB F "alor
F BI
El cdigo de nuestra clase
&E#"eado es:
G8
8 /o change this template, choose /ools J /emplates
8 and open the template in the editor.
8G
pacKage appguiaejemplo.clases+
G88
8
8 Lauthor administrador
8G
public class cEmpleado A
c.onexion c @ neH c.onexion()+
public "oid '-!E1/,1(int codigo, !tring nombre, !tring apellido, !tring dui, double sueldo) A
c.0'3(B'-!E1/ '-/% EP$E,3%(codigo,nombre,apellido,dui,sueldo) "alues(B F codigo F B,
IB F nombre F BI,IB F apellido F BI,IB F dui F BI,B F sueldo F B)B)+
E
E
L2e'o rea"i)are#os e" #5todo
ara adi&ionar, "o ""a#are#os
MOD6(61A-
public "oid modificar(int codigo, !tring nombre, !tring apellido, !tring dui, double sueldo)A
c.0'3(B0P3,/E EP$E,3% set nombre@IB F nombre F BI,apellido@IB F apellido F BI,
dui@IB F dui F BI,sueldo@B F sueldo F B Hhere codigo@B F codigo)+
E
Por $"ti#o rea"i)are#os n2estro
#5todo ara e"i#inar, "o
""a#are#os BO--A-
public "oid &%11,1(int codigo)A
c.0'3(B3E$E/E =1% EP$E,3% Hhere codigo@B F codigo)+
E
N8tese, que los tres 9todos
emplean &.36D, &@la instancia de
nuestra &1one*ion y 36D@el
m9todo que tiene la clase
&1one*ion para reali*ar acciones
sobre la base de datos.
Paso 9.
1eali*aremos la creacin de la
interfa*, para lo cual colocaremos
un >=rame=orm.
.lic derecho y luego -EM, si no
aparece en las opciones, buscarlo
en la categor6a ,win' :36 (or#s ;
"2e'o se"e&&ionar J(ra#e(or#,
clic en siguiente
.olocarle un nombre y luego clic en
='-'!5
$a interfa* que se crear podr6a ser
compuesta por >labels, >textfield,
>button y una >table, algo como lo
siguiente
,hora, codificaremos cada uno de
ellos, iniciaremos con el botn
'-!E1/,1, para lo cual daremos
clic derecho sobre el botn
'-!E1/,1 y luego seleccionaremos
E?E-/! y luego ,ction y por 2ltimo
actionPerformed, esto nos en"iar al
cdigo.
El cdigo hace una instancia de la
clase se empleado y necesitar
importar el paquete
,hora el cdigo para el en"6o de
cada uno de los "alores:
GGPrimero haremos una instancia de la clase cEmpleado
cEmpleado c @ neH cEmpleado()+
G8
.apturando los "alores en "ariables a partir de las cajas de texto del formulario
,unque los "alores se pueden en"iar directamente desde los controles del formulario
$o presento asi para mayor claridad
8G
int codigo @ 'nteger.parse'nt(this.txtcodigo.get/ext())+
!tring nombre @ this.txtnombre.get/ext()+
!tring apellido @ this.txtapellido.get/ext()+
!tring dui @ this.txtdui.get/ext()+
double sueldo @ 3ouble.parse3ouble(this.txtsueldo.get/ext())+
GGEn"iando los "alores a la clase cEmpleado
c.'-!E1/,1(codigo, nombre, apellido, dui, sueldo)+

GGostrando mensaje si todo funciona bien
>%ptionPane.shoHessage3ialog(null, B'-=%1,.'%- ,$,.E-,3,B)+
,hora el cdigo para el botn
MOD6(61A-:
GGPrimero haremos una instancia de la clase cEmpleado
cEmpleado c @ neH cEmpleado()+
G8
.apturando los "alores en "ariables a partir de las cajas de texto del formulario
,unque los "alores se pueden en"iar directamente desde los controles del formulario
$o presento asi para mayor claridad
8G
int codigo @ 'nteger.parse'nt(this.txtcodigo.get/ext())+
!tring nombre @ this.txtnombre.get/ext()+
!tring apellido @ this.txtapellido.get/ext()+
!tring dui @ this.txtdui.get/ext()+
double sueldo @ 3ouble.parse3ouble(this.txtsueldo.get/ext())+
GGEn"iando los "alores a la clase cEmpleado
c.modificar(codigo, nombre, apellido, dui, sueldo)+

GGostrando mensaje si todo funciona bien
>%ptionPane.shoHessage3ialog(null, B'-=%1,.'%- ,$,.E-,3,B)+
,hora el cdigo para el botn
EL6M6NA-<
GGPrimero haremos una instancia de la clase cEmpleado
cEmpleado c @ neH cEmpleado()+
G8
.apturando los "alores en "ariables a partir de las cajas de texto del formulario
,unque los "alores se pueden en"iar directamente desde los controles del formulario
$o presento asi para mayor claridad
8G
int codigo @ 'nteger.parse'nt(this.txtcodigo.get/ext())+
GGEn"iando los "alores a la clase cEmpleado
c.&%11,1(codigo)+

GGostrando mensaje si todo funciona bien
>%ptionPane.shoHessage3ialog(null, B'-=%1,.'%- ,$,.E-,3,B)+
Probamos el cdigo y podemos
entrar en la base y abrir la tabla y
"er que guarda "alores7 que
modifica (en base al cdigo) y que
borra registros (tambi9n en base al
cdigo)
:. ,hora, "amos a colocar el cdigo
que llena el conjunto de datos. En la
clase cEmpleado
public 1esult!et get"alores() A
1esult!et rs @ null+
try A
.onnection cnx @ null+
!tatement sttm @ null+
cnx @ 3ri"eranager.get.onnection(Bjdbc:odbc:conexionCejemploB)+
sttm @ cnx.create!tatement(1esult!et./DPEC!.1%$$C!E-!'/'?E, 1esult!et..%-.01C1E,3C%-$D)+
!tring sqlcad @ B!E$E./ codigo,nombre,apellido,dui,sueldo =1% EP$E,3%B+
rs @ sttm.execute#uery(sqlcad)+
return rs+
E catch (Exception e) A
E
return rs+
E
-tese, que estamos creando
nue"amente la conexin, aunque
esto podr6a definirse perfectamente
en la c.onexion, lo coloco aqu6 para
que sea ms claro y que puedan
"er, que se podr6a definir en la clase
cEmpleado sin ning2n problema.
/ambi9n, poner atencin en que
este m9todo es una =0-.'%- que
retorna un 1esult!et (un conjunto
de datos)
,dicionar los paquetes de
ja"a.sql..onnection,
ja"a.sql.1esul!et,
ja"a.sql.3ri"eranager+ y
ja"a.sql.!tatement
N. ,hora programamos el cdigo del
botn buscar en nuestro formulario:
try A
3efault/ableodel modelo @ neH 3efault/ableodel()+
modelo.add.olumn(BcodigoB)+
modelo.add.olumn(BnombreB)+
modelo.add.olumn(BapellidoB)+
modelo.add.olumn(BduiB)+
modelo.add.olumn(BsueldoB)+
cEmpleado c @ neH cEmpleado()+
1esult!et rs @ c.get"alores()+
Hhile (rs.next()) A
%bjectOP fila @ neH %bjectOQP+
for (int i @ R+ i S Q+ iFF) A
filaOiP @ rs.get%bject(i F ;)+
E
modelo.add1oH(fila)+
E
this.j/able;.setodel(modelo)+
E catch (Exception e) A
>%ptionPane.shoHessage3ialog(null, e.getessage())+
E
0n modelo, es un esquema
o estructura que se le coloca
a un control >/able para
poder tener el n2mero de
columnas que utili*aremos,
en nuestro caso son Q
columnas, el cdigo interno
que recorre fila por fila y
columna por columna debe
corresponder al n2mero de
campos que deseamos
mostrar.
%bjectOP fila @ neH %bjectOQP+
for (int i @ R+ i S Q+ iFF) A
filaOiP @ rs.get%bject(i F
;)+
E
!i se trabajara con ;R campos (;R
columnas) el cdigo ser6a:
%bjectOP fila @ neH %bjectO;RP+
for (int i @ R+ i S ;R+ iFF) A
filaOiP @ rs.get%bject(i F
;)+
E
El modelo que creamos con:
3efault/ableodel modelo @
neH 3efault/ableodel()+
!e llena a partir de un
1esult!et que se obtiene de
la clase cEmpleado:
cEmpleado c @ neH
cEmpleado()+
1esult!et rs @
c.get"alores()+
3ebemos adicionar los
paquetes de:
import ja"a.sql.1esult!et+
import
ja"ax.sHing.table.3efault/ableodel
+
,djunto coloco un "ideo que
muestra el funcionamiento de
nuestro proyecto creado.
$a estructura final de nuestro
proyecto es la siguiente: