Presentación
Presentación
……… ………..………..3
3
Modulo
Modulo
Semana 1:
Semana 1: Arreglos Lineales y Matrices
Arreglos Lineales y Matrices
……….………. ....4
4
Semana 2:
Semana 2: Ordenamiento de datos y Búsqueda de
Ordenamiento de datos y Búsqueda de
Datos…….……….Datos…….……….28
28
Semana 3:
Semana 3:
Programación Orientada a Objetos ………Programación Orientada a Objetos ………40
40
Semana 4:
Semana 4:
Manejo de la Clase String ………Manejo de la Clase String ………72
72
Semana 5:
Semana 5: Manejo de Archivos
Manejo de Archivos
………...………...81
81
Semana 6:
Semana 6: Clases Primitivas
Clases Primitivas
……….……….99
99
Semana 7:
Semana 7: Métodos propios
Métodos propios
………116
116
Semana 8:
Semana 8: Ejercicios de Aplicación
Ejercicios de Aplicación
………127
127
Semana 9:
Semana 9: Manejo de Capas en una aplicación en escritorio
Manejo de Capas en una aplicación en escritorio
………133
133
PRESENTACIÓN
PRESENTACIÓN
Esta guía didáctica es un material de ayuda institucional, perteneciente a las
Esta guía didáctica es un material de ayuda institucional, perteneciente a las
especialidades de computación,
especialidades de computación,
IngIng enieni eríería de Sofa de Sof twtw are areee
IngIng enieni eríería da d e Rede Red es yes y C o m u n i c a c i o n e sC o m u n i c a c i o n e s
tiene por finalidad proporcionar los conocimientos de la programación
tiene por finalidad proporcionar los conocimientos de la programación
orientada a Objetos a los estudiantes del segundo ciclo de estudios.
orientada a Objetos a los estudiantes del segundo ciclo de estudios.
La
La Organización SISE,
Organización SISE, líder en la enseñanza tecnológica a nivel superior, promueve la
líder en la enseñanza tecnológica a nivel superior, promueve la
elaboración de materiales educativos, en concordancia a las exigencias de las tecnologías
elaboración de materiales educativos, en concordancia a las exigencias de las tecnologías
de estos tiempos, que permiten la creación de nuevas herramientas de aprendizaje con el
de estos tiempos, que permiten la creación de nuevas herramientas de aprendizaje con el
objetivo de facilitar el acceso de los estudiantes a la educación en el marco del desarrollo
objetivo de facilitar el acceso de los estudiantes a la educación en el marco del desarrollo
tecnológico de la informática de las telecomunicaciones.
tecnológico de la informática de las telecomunicaciones.
Esta guía permite conocer las herramientas indispensables para la elaboración de
Esta guía permite conocer las herramientas indispensables para la elaboración de
aplicaciones con el uso de la técnica O.O. Se inicia con el uso de técnica en manejo de
aplicaciones con el uso de la técnica O.O. Se inicia con el uso de técnica en manejo de
datos en memoria y en el manejo de capas donde estas técnicas básicas se necesitan
datos en memoria y en el manejo de capas donde estas técnicas básicas se necesitan
para dar solución a una determinada proposición o problema.
para dar solución a una determinada proposición o problema.
En este proceso el alumno aprenderá instrucciones que le permitirán evaluar expresiones
En este proceso el alumno aprenderá instrucciones que le permitirán evaluar expresiones
para luego procesar un conjunto de sentencias. También aprenderá el manejo de una
para luego procesar un conjunto de sentencias. También aprenderá el manejo de una
aplicación a nivel de contenedores.
aplicación a nivel de contenedores.
La implementación y uso de Capas dentro de la aplicación en escritorio permitirán que el
La implementación y uso de Capas dentro de la aplicación en escritorio permitirán que el
alumno aplique la técnica Orientada a objetos.
alumno aplique la técnica Orientada a objetos.
Todas estas herramientas darán un soporte solido al alumno para aprender a programar
Todas estas herramientas darán un soporte solido al alumno para aprender a programar
en cualquier lenguaje Orientada a Objetos(JAVA, .NET, Visual C,etc).
en cualquier lenguaje Orientada a Objetos(JAVA, .NET, Visual C,etc).
Este material en su primera edición, servirá para ayudar a nuestros estudiantes
Este material en su primera edición, servirá para ayudar a nuestros estudiantes
SISESINOS.
Contenidos
-
Presentación del curso: NetBeans. Caracteristicas. Versiones. Módulos NBM.
-
Uso del Entorno Integrado. Proceso de desarrollo de un Proyecto. Conponentes Swing.
-
Estructura de un Proyecto.
-
Base de Datos. Objetos de una BD. Lenguaje SQL . Sentencias Básicas
____________________________________________________________________________
NetBeans
NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una
comunidad en constante crecimiento, y con cerca de 100,000 socios en todo el mundo. Sun
MicroSystems adquirió el proyecto de código abierto NetBeans en junio 2000 y continúa siendo el
patrocinador principal de los proyectos. Al día de hoy hay disponibles dos productos: el NetBeans
IDE (Entorno de Desarrollo Integrado) y la Plataforma NetBeans. La plataforma NetBeans permite
que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software
llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para
interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como
módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole
nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las
aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros
desarrolladores de software.
El NetBeans IDE
Es un entorno de desarrollo - una herramienta para programadores pensada para escribir, compilar,
depurar y ejecutar programas. Está escrito en Java - pero puede servir para cualquier otro lenguaje
de programación. Existe además un número importante de módulos para extender el IDE NetBeans.
El IDE NetBeans es un producto libre y gratuito sin restricciones de uso.
NetBeans.org es el portal de la comunidad de código abierto de NetBeans dedicado a construir un
IDE de primera clase. netbeans.org permite a usuarios de más de 160 países de todo el mundo
estar en contacto con los recursos y los programadores de NetBeans. Es posible descargar desde
aquí las últimas versiones de NetBeans, acceder a la documentación de ayuda en línea, profundizar
su conocimiento personal de Java, estar al corriente de las últimas noticias, unirse a una lista de
distribución, contribuir código, conocer las personas implicadas en el proyecto, conocer gente, y
mucho más.
Instalar NetBeans
La instalación de NetBeans es muy sencilla. En la mayoría de los casos, basta con descomprimir el
archivo ZIP descargado en una unidad
de disco con espacio libre suficiente. Para
ejecutar NetBeans necesitará cumplir los requisitos técnicos detallados a continuación
Una plataforma compatible: NetBeans IDE6.8 Windows 2000/XP/Vista; Linux (x86/x64);Solaris
Espacio de disco suficiente: Dependiendo de la versión que desea instalar; la que menos utiliza es de 45 MB y la completa de
Java JDK 6: jdk-6u4-windows-i586-p.exe
Cargando la Aplicación:
1. Dar clic al botón de Inicio de Windows.
2. Seleccionar Todos los programas / Netbeans
3. Seleccionar NetBeans IDE 6.8
Nota: Esperar unos instantes, ya que la aplicación tarda unos segundos al cargar completamente.
Posteriormente se observará la figura que se muestra a continuación.
Pantalla principal al Iniciar NetBeans IDE 6.8
Creación de un Nuevo Proyecto:
1. En el IDE, seleccione File> New Project, tal como se muestra en la s iguiente figura.
como se muestra en la siguiente figura. A continuación, haga clic en Next
3. En el Nombre y ubicación de la página del asistente, haga lo siguiente (tal y como se muestra en
la siguiente figura):
a) Establezca el nombre del proyecto (Project Name): Por ejemplo, Proyecto30.
b) Establezca el directorio donde se almacenará el proyecto (Project Location). Por ausencia
en Windows 2000 y XP, el directorio es el directorio inicial del usuario
: “C:\Documents and
Settings\
usuario”. En este ejemplo, el proyecto se ubicó en:
“C:\Documents and
Settings\Administrador\Mis documentos\Netbeans Projects
”. En la línea siguiente puede
verse la ubicación del directorio en el que se almacenarán los archivos del proyecto: Project
Location, que es el directorio con el nombre del proyecto dentro del directorio donde se ubica
el proyecto. En este ejemplo es:
“C:\Documents and Settings\ Administrador\Mis
documentos\ Netbeans Projects \Proyecto30
”.
c) Asegúrese que las casillas de selección: Set as Main Project (Haga que este proyecto sea
el proyecto principal) y Create Main Class (Cree la clase principal, la clase con el método
main()) estén seleccionadas.
d) En el campo de texto al lado de la casilla Create Main Class se establece el nombre de la clase
principal. El valor por ausencia es:
nombreProyecto.Main, indicando que la clase principal se
llamará Main y estará en el paquete
nombreProyecto. Cambie ese valor a Proyecto30.CEjemplo30.
El proyecto es creado y abierto en el IDE. Debe ver los siguientes componentes:
Ventana de Proyectos, que contiene una vista en árbol de los componentes del
proyecto, incluyendo archivos de origen, las bibliotecas que depende de su código, y así
sucesivamente.
Ventana Editor de Código Fuente (Source) con un archivo llamado Guia1Java01 abierto.
La Ventana del Navegador , que usted puede utilizar para navegar rápidamente entre los
elementos seleccionados dentro de la clase.
Ex lorador
Inspector de Componentes
Ventana de
Ubicación de los Archivos de un Proyecto( pestaña Files en el Explorador)
La figura 1.7, muestra los directorios y archivos generados al crear el proyecto. El código fuente de
una clase se guarda en un archivo que tiene el mismo nombre de la clase y con la extensión “.java”,
por ejemplo, Ejemplo30.java está dentro de la carpeta proyecto30 (el nombre del paquete) que a su
vez está dentro de la carpeta “src” (donde se almacenan los archivos fuentes de este proyecto) y que a su vez está dentro de la carpeta “Proyecto30” (que contiene todos l
os archivos del proyecto).
Creación de una Clase
Para crear una clase se sigue el siguiente procedimiento:
1. Del menú principal de Netbeans 6.8, figura 1.1, seleccione la opción Files/New File,
presione las teclas Ctrl+ N o haga clic en el icono New File, como se muestra en la
figura 1.8:
Figura 1.8
2. Aparecerá la primera ventana del asistente para crear una nueva clase, figura 1.9. En
esta ventana del asistente seleccionaremos el tipo de clase que deseamos crear.
Seleccionaremos la opción Java en el recuadro Categories: y la opción Java Class en el
recuadro File Types:, y luego presionaremos el botón Next>.
3. Aparecerá la segunda ventana del asistente para crear clases, mostrada en la figura 1.10.
En esta ventana seleccionaremos el nombre y la ubicación de la clase.
a) Establezca el nombre de la clase (
Class Name
): Por ejemplo,
CCirculo
.
b) Establezca el paquete donde estará la clase (
Package
). Por ejemplo :
proyecto30
c) Presione el botón
Finish
.
Figura 1.10
4. Desaparecerá el asistente para crear una nueva clase y aparecerá el esqueleto de la clase
creada, 1.11.
5. Agregue el código de los atributos, constructores y métodos siguientes a la clase:
CCirculo
.java
-Modificar la Clase Denominada
CEjemplo30.java
6. Guarde la clase seleccionando del menú principal la opción
File/Save
,
presione las teclas
Ctrl+S para guardar el Documento actual
o haga
clic en el icono
Save All ( Ctrl+ Shift+S) para guardar todo el
Proyecto.
.
Luego realizar un clicK en la ventana de Salida (Output) que esta en la parte inferior del IDE , e
ingresar el valor del Radio y pulsar ENTER para mostrar los Resultados.
Nota:
Para volver a compilar y Generar nuevamente el Proyecto( compilarlo en su Integridad) se
debe pulsar
SHIFT+F11
o el Icono
Pestaña Services ( Servicios) del explorador de Proyectos
Se Utiliza para Agregar Nuevos drivers ( Archivos Controladores) de Base de Datos o
Conexiones Con base de datos, así como tambien permite modificarlos y eliminarlos.
Generación de los Métodos de Acceso ( getXxx() y SetXxx() )
NetBeans permite la generación automática de los métodos de acceso (
getXxx()
y
setXxx()
) que nos permiten inspeccionar y modificar el valor de los atributos de una
clase. Para generar los métodos de acceso de la clase que se encuentra en la ventana
de edición se sigue el siguiente procedimiento:
1. Haga clic con el botón derecho en cualquiera de los atributos de la clase
y seleccione las opciones
Refactor/Encapsulate Fields
de los menús
emergentes, como se muestra en la figura 1.13.
casillas de los métodos de acceso que deseé generar. Cambie en la caja
Combo:
Field Visibility
a la opción
protected
, deselecciona la caja de
selección:
Use Accessors Even When field is Accesible
, y deje el resto de
las
opciones sin modificar, como se muestra en la figura 1.14, y haga clic en
el botón
Next>.
JMenu
Este componente p
er
mi
t
e agregar l
a
t
í
pi
ca
barra de menús que
ca
si
todo pr
ogr
a
ma
posee
.
De
l
a
mis
ma
manera que
lo
JButton, losmenús mostrados en
l
a
barra
se
ca
mbi
a
n de
texto conclic
derechoy l
ue
goen
“Edi
t
Te
xt
”.
Para agregar más menús a
l
a
barra, se da clic derecho sobre un área
v
a
cí
a
l
a
mis
ma
barra
y
a
l
final del
cuadro des
ple
ga
ble
,
clic sobre
AddJM
e
nu.
Y para agregar Ítems o
cont
e
ni
dodentro de cada menú,
le da clic
derecho sobreel
JMe
núa
l que se le
quier e
a
ña
dir
cont
e
ni
doy en l
a
parte inferior del
a
lis
ta,
conl
a
opci
ón Ad d encontramosl
os
componentes que se pueden
a
gr
e
ga
r
.
Si
observael Inspector de Objetos, se dará cuenta de que bajo l
a
barra
de menú
va
na
pa
r
e
cie
ndol
os
JMe
nu,
JMe
nuIte
ms
y
demás componentes que hemosa
ña
di
doa
l menú,
a
si
que para modificarel
texto que mostrará cada uno de
ell
os
,
es
ne
ces
a
r
i
osele
cci
ona
r
el
objeto,
y l
ue
goen
l
a
zona de pr
opie
da
des
,
conl
a
opción Te
xt,
ca
mbi
a
mos
di
chot
e
xt
o.
JComboBox
Componente que muestra una
lis
ta
d es
ple
ga
ble
.
Paraa
ña
dir
l
os
textos
que
ser
á
nmostrados en
l
a
lis
ta,
sele
cci
ona
mos el
ComboBox ,y l
ue
go en
l
a
zona de
pr
opie
da
des
buscamosl
a
opción Modell
a
cua
l muestra un
cuadro de
di
á
l
ogo que
per
mi
t
e
ira
ña
die
ndo textos conel
bot
ón “ Add”,
y
l
ue
gode
a
ña
dir l
os
,
ca
mbi
a
r
les
de
posición conl
os
cont
r
oles
Upy
Down
,
e
di
ta
r
o eli
mi
na
r su
cont
e
ni
do.
Este JComboBox per
mi
t
e acceder a
ca
da
uno del
os
componenteslis
ta
dos
por
me
di
o de
l
os
métodos ge
t
Sele
ct
e
dInde
x()
y
ge
t
Sele
ct
e
dIte
m()
;el
pr
i
mer
oretorna
l
a
posición del
objetosele
cci
ona
doy
el
segundo retorna un objecto.JTable - JScrollPane
Este componente per mite crear tablas de filas y columnas para desde
sencillos f or mular ios o listados hasta comple jas hojas de cálculo tipo Excel.
Este componente, aunque se puede, No se debe colocar dir ectamente en el área de trabajo, pr imer o debe colocar se un JScrollPane, el cual per mite la utilización de barras de desplazamiento hor izontal y ver tical en caso de que la
cantidad de celdas sobrepase el tamaño de la vista.
Pr imer o seleccionamos el JScr ollPane y lo ubicamos en la pantalla; este apar ece inicialmente como un pequeño punto, pero con un clic sobre este punto y arr astr ando el Mouse en diagonal hacia arr iba y la izquier da, podemos acomodar el tamaño de la vista que per mitir á este scr oll.
Luego seleccionamos el JTable de la Paleta y hacemos clic sobre el JScr ollPane que ya hemos acomodado anter ior mente.
Apar ece un JTable con una cantidad de filas y columnas pr edeter minadas, pero
estas se pueden cambiar haciendo uso de la opción model que se encuentra en la zona de pr opiedades de este objeto. Esta opción abre un cuadro de diálogo que per mite agregar o quitar filas y columnas, escoger el tipo de dato que debe ir en cada celda (Str ing, int, double, etc…) y per mitir cuales celdas serán editables o no.
JSpinner
Componente que f acilita el incr emento o decremento de alguna var iable, que por def ecto es numér ica, aunque también se puede usar par a mostrar un rango de var iables de texto, o hasta crear un objetom más comple jo como un seleccionador de f echas.
En este
e
je
mpl
o,
el
pri
me
r JSpi
nne
r es usado en conjunto con un Spi
nne
r Numbe
r Model
,
el
cual
soporta unase
cue
ncia
de númerosdoublés
o i
nt
.
Ade
más
puedees
pe
ci
fi
ca
rl
os
val
ores
má
xi
mos y
mí
ni
mos
p
e
r miti
dos
,
el
val
or inicial yla
ca
nti
da
d de cadai
ncre
me
nt
oo
decremento. Para definiresto, accedemos a
la
opci
ón model
dela
zona de pr opie
da
des
de este
JSpi
nne
r,
y en el
cuadro de diál
ogo que aparece, sele
cci
ona
mos
la
opción User Codey
col
oca
mos el si
guie
nte
códi
go:new javax.swing.Spinner Number Model ( inicial, min, max, incr emento )
Y l
ógi
ca
me
nte
,
ree
mpla
za
mos
las
va
ria
bles
porel
val
or qued
esea
mos
.
El
segundo JSpi
nne
r es usado con un Spi
nne
r List
Model
el
cual muestra l
os
val
ores
de
fi
ni
dos
en una
rre
gl
o de objetoso
en unalista
.
El
tercer JSpi
nne
r es usado con Spi
nne
r Date
Model y
un Date
Edit
or,
conlo
cual el
JSpi
nne
r soporta unase
cue
ncia
de fe
chas
.
Desde netbeans, estas pr op
ie
da
des y
f unci
onali
da
des
a
di
ci
onales
no se puedena
gre
ga
r di
re
cta
me
nte
por me
di
o dela
i
nte
r fa
z grá
fi
ca
.
Esteti
po de pe
rs
onali
za
ci
ón que
soportanl
os s
pi
nne
res s
ol
o posi
ble e
dita
ndoel
códigoy
agregando estos model
os
.
Este
t
ut
orial está e
nca
mi
na
do por ahoras
ol
oa la
crea
ci
ón dei
nte
r fa
ces
tipo de objetos se desarr ollar á en otro tutor ial dedicado a la pr ogr amación avanzada de inter f aces swing.
Más inf o: http:// java.sun.com/docs/books/tutor ial/uiswing/components/spinner .html
Los componentes hasta ahora nombrados se han especif icados un poco en detalle debido a que una buena utilización de estos, per mite obtener una
inter f az más agr adable; la extensa lista de los demás componente de java swing no han sido detallados debido a su fácil utilización, ya que el usuar io puede ir probando, colocando objetos y per sonalizando su inter f az a su medida.
A pesar de que Netbeans es un entorno de desarr ollo muy completo y podemos editar tanto código como GUI queramos, es muy r ecomendable usar esta herr amienta solo como editor gr áf ico, ya que la edición de código desde este ide no tiene un buen nivel de usabilidad que per mita un buen contr ol de código, corr eción de errores y demás tareas de manera facil y agr adable.
Uso de JDB C - Clase Driver Manager
•
JDBC, es mas que un acrónimo de Java DataBase Connectivity, es un API de Java que
permite al programador ejecutar instrucciones en lenguaje estándar de acceso a Bases de
Datos SQL (Structured Query Language), un lenguaje para crear, examinar, manipular y
gestionar Bases de datos relacionales. En el diagrama siguiente se puede apreciar como la
idea es que las aplicaciones sólo
setengan que comunicar con el interfaz JDBC. Éste
es el encargada de comunicarse
conlos sistemas de base de
datos.Ilustración 1, Esquema JDBC
Esto hace que la programación de aplicaciones de acceso a bases de datos no
necesite
conocer el funcionamiento del SGBD en particular, lo que hay que conocer es
elfuncionamiento de JDBC. Por supuesto, es necesario adquirir un controlador
JDBCpara el sistema gestor de base de datos que utilicemos. La comunicación
fundamentalcontroladores( Drivers)
Una vez instalado, configurado y puesto en funcionamiento nuestro sistema gestor
debase de datos favorito, si queremos que las bases de datos creadas por él sean
accesiblesdesde los programas Java, necesitamos el controlador JDBC de ese
sistema.Hay cuatro tipos de
controladores:Tipo 1. Controlador que traduce de JDBC a ODBC, Un controlador de este tipo
esla pasarela JDBC-ODBC.
No es muy productiva ya que necesita ser
configurada
para un controlador ODBC concreto. aunque actualmente
existen
mejoressoluciones de este tipo, sigue requiriendo tener dos controladores
en el
cliente.Ilustración 2, Funcionamiento del controlador
JDBC de tipo 1
Tipo 2. Son controladores parcialmente escritos en Java y parcialmente
escritosen el código nativo que comunica con el API de la base de datos. En
estoscontroladores hay que instalar tanto paquetes Java como paquetes de
códigonativo, lo que no les hace válidos para
Internet.Ilustración 3, Funcionamiento del controlador
JDBC de tipo 2
Tipo 3. Son paquetes puros de Java que usan protocolos independientes de
labase de datos. Es decir las instrucciones JDBC son pasadas a un servidor
genérico
de base de datos que utiliza un protocolo determinado. No
requiere
tenerinstalado ningún software de librería de la base de datos. Lo
malo es que
elservidor intermedio (middleware) suele requerir instrucciones
Ilustración 4, Funcionamiento del controlador
JDBC de tipo 3
Tipo 4. Paquetes de Java puro que traducen peticiones JDBC a protocolo de
basede datos específico. No requieren intermediarios entre el software JDBC y la
basede
datosIlustración 5, Funcionamiento del controlador JDBC de tipo 4
Normalmente las distribuciones JDBC que suministran los fabricantes son de tipo 3 o 4. para adquirir estos controladores es necesario ponerse en contacto con el fabricante o dirigirse a su página web y después descargarlo. Las instrucciones de instalación las da el fabricante, pero en caso de ser controladores de tipo 3 o 4 habrá que instalar los paquetes del API JDBC en la ruta Classpath para que sean accesibles por los compiladores Java.
Para saber si existe controlador JDBC para nuestra base de datos de trabajo, se puede comprobar en la dirección:
http://servlet.java.sun.com/products/jdbc/drivers/index.html
conexión
Para conseguir conectar una base de datos con una aplicación, nuestra aplicación requiere el URL de la base de datos y las propiedades que establezca nuestro controlador JDBC. Las clases necesarias para usar JDBC están en el paquete java.sql. El primer paso es instalar el controlador (driver ) de la base de datos.
Tipo
Clase JDBC
Implementación
java.sql.Driver
java.sql.DriverManager java.sql.DriverPropertyInfo Conexión a base de datos java.sql.Connection
Sentencias SQL java.sql.Statement java.sql.PreparedStatement java.sql.CallableStatement Datos java.sql.ResulSet Errores java.sql.SQLException java.sql.SQLWarning
Pero el método que más se usa es lanzar el controlador en la propia aplicación
medianteel método estático forName de la clase Class. Es decir, el formato
es:Class.forName(rutaDelDriver );
La ruta del driver tiene que venir en las instrucciones del fabricante. Por ejemplo en
elcaso del controlador MySQL el formato
es:Class.forName("com.mysql.jdbc.Driver");
En SQL Server 2005 es
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver ");
Esa instrucción puede dar lugar a las excepciones ClassNotFoundException (si no
seencontró la clase en el driver
JDBC).Una vez que el controlador se ha registrado,
entonces se abre la URL a la base
dedatos. cuyo formato suele
ser:jdbc:s g b d : / / s e r v i d o r / b a s e d a t o s : p u e r t o ? u s e r = x x x & p a s s w o r d = y y y
Por ejemplo en
MySQLPor ejemplo
Por ejemplo en SQL Server
en SQL Server
20052005jdbc:sgls
jdbc:sglserver://locerver://localhost:143alhost:1433;databas3;databasename=Noename=No mbreBDmbreBD
La conexión se realiza mediante un objeto de la clase
La conexión se realiza mediante un objeto de la clase java.sql.Connection
java.sql.Connection
. La. Laconstrucción típica implica indicar la URL de la base de datos, el usuario y
construcción típica implica indicar la URL de la base de datos, el usuario y
lalacontraseña. Ejemplo
contraseña. Ejemplo
(MySQL):(MySQL):Connection
Connection cn=cn=DriverManager DriverManager .getConnection( "jdbc:mysql://localhost/almacen:3306","root","compa");.getConnection( "jdbc:mysql://localhost/almacen:3306","root","compa");
El método estático
El método estático getConnection
getConnection de la clase
de la clase DriverManager
DriverManager es el encargado
es el encargado
dederealizar la conexión. Al crearla pueden ocurrir excepciones
realizar la conexión. Al crearla pueden ocurrir excepciones SQLException
SQLException
que
que
habráhabráque capturar. Los fallos ocurren por que la URL está mal, la base de datos no
que capturar. Los fallos ocurren por que la URL está mal, la base de datos no
estáestáejecutándose, el usuario no es el correcto,
ejecutándose, el usuario no es el correcto,
etc.etc.La conexión se cierra con el método
La conexión se cierra con el método close
close
de la clase
de la clase Connection
Connection
..DSN ( Data Source Name)
DSN ( Data Source Name)
un DSN son las siglas de Data Source Name y son básicamente unos nombres o referencias a
un DSN son las siglas de Data Source Name y son básicamente unos nombres o referencias a
bases de datos que utilizan los sistemas Windows para trabajar con esas bases de datos por
bases de datos que utilizan los sistemas Windows para trabajar con esas bases de datos por
conexión ODBC. En los DSN se especifican los datos que necesita Windows para conectarse con
conexión ODBC. En los DSN se especifican los datos que necesita Windows para conectarse con
una base de datos, como el nombre del servidor o el origen de datos, cadena de conexión, etc. Los
una base de datos, como el nombre del servidor o el origen de datos, cadena de conexión, etc. Los
DSN se configuran desde el panel de control de Windows, en Herramientas administrativas
DSN se configuran desde el panel de control de Windows, en Herramientas administrativas
-Origenes de datos ODBC.
Origenes de datos ODBC.
Una base de datos es sencillamente un conjunto de tablas en las que almacenamos distintos
Una base de datos es sencillamente un conjunto de tablas en las que almacenamos distintos
registros (artículos de una tienda virtual, proveedores o clientes de una empresa, películas en
registros (artículos de una tienda virtual, proveedores o clientes de una empresa, películas en
cartelera en el cine...). Estos registros son catalogados en función de distintos parámetros que los
cartelera en el cine...). Estos registros son catalogados en función de distintos parámetros que los
caracterizan y que presentan una utilidad a la hora de clasificarlos. Así, por ejemplo, los artículos de
caracterizan y que presentan una utilidad a la hora de clasificarlos. Así, por ejemplo, los artículos de
una tienda virtual podrían catalogarse a partir de distintos campos como puede ser un número de
una tienda virtual podrían catalogarse a partir de distintos campos como puede ser un número de
referencia, nombre del artículo, descripción,
referencia, nombre del artículo, descripción, precio, proveedor...
precio, proveedor...
Las bases de datos son construidas sirviéndose de aplicaciones tales como el Microsoft Access o el
Las bases de datos son construidas sirviéndose de aplicaciones tales como el Microsoft Access o el
MySQL las cuales resultan bastante sencillas de util
MySQL las cuales resultan bastante sencillas de util izar con unos conceptos mínimos.
izar con unos conceptos mínimos.
Nuestro objeto aquí no es explicar la forma de explotarlas sino cómo establecer una conexión entre
Nuestro objeto aquí no es explicar la forma de explotarlas sino cómo establecer una conexión entre
la base de datos, almacenada en cualquier lugar del disco duro y nuestra página web alojada
la base de datos, almacenada en cualquier lugar del disco duro y nuestra página web alojada
también en cualquier parte y reconocida por
también en cualquier parte y reconocida por nuestro servidor personal a partir del directorio vir
nuestro servidor personal a partir del directorio vir tual.
tual.
Para crear este vínculo, nos servimos de los conectores ODBC (Open DataBase Connectivity) los
Para crear este vínculo, nos servimos de los conectores ODBC (Open DataBase Connectivity) los
cuales establecen el enlace con la base de datos.
El primer paso para crear esta conexión es ir al panel de configuración y abrir el icono ODBC 32bits.
El primer paso para crear esta conexión es ir al panel de configuración y abrir el icono ODBC 32bits.
Dentro de él, deberemos crear un DSN (Data Source
Dentro de él, deberemos crear un DSN (Data Source Name) de tipo sistema o usuario. Para ell
Name) de tipo sistema o usuario. Para ell o nos
o nos
colocamos en la solapa correspondiente (DSN sistema o DSN usuario) y seleccionamos "Añadir". A
colocamos en la solapa correspondiente (DSN sistema o DSN usuario) y seleccionamos "Añadir". A
continuación se nos pedirá seleccionar los controladores de la aplicación que hemos utilizado para
continuación se nos pedirá seleccionar los controladores de la aplicación que hemos utilizado para
crear la base de datos, el nombre que le queremos asignar (aquel que empleemos en nuestros
crear la base de datos, el nombre que le queremos asignar (aquel que empleemos en nuestros
scripts) y el camino para encontrarla en
scripts) y el camino para encontrarla en el disco duro.
el disco duro.
Esta DSN permite en realidad definir la base
Esta DSN permite en realidad definir la base de datos que
de datos que
será interrogada sin necesidad de pasar por la aplicación
será interrogada sin necesidad de pasar por la aplicación
que hayamos utilizado para construirla, es decir, con
que hayamos utilizado para construirla, es decir, con
simples llamadas y órdenes desde nuestros programa
simples llamadas y órdenes desde nuestros programa
podremos obtener los datos que buscamos sin necesidad
podremos obtener los datos que buscamos sin necesidad
de ejecutar el Access o el MySQL los cuales,
de ejecutar el Access o el MySQL los cuales,
evidentemente, no tendrán por qué encontrarse en el
evidentemente, no tendrán por qué encontrarse en el
servidor donde trabajemos
Interfaz
Interfaz
S t a t e m e n tS t a t e m e n tla interfaz
la interfaz
Statement Statementpermite ejecutar las instrucciones SQL y devolver el resultado generado: El
permite ejecutar las instrucciones SQL y devolver el resultado generado: El
método
método createStatement
createStatement de la clase
de la clase Connection
Connection, permite obtener una variable
, permite obtener una variable
dedela interfaz
la interfaz
Statement
Statement que permite ejecutar sentencias SQL sobre la base de datos.
que permite ejecutar sentencias SQL sobre la base de datos.
LosLosobjetos
objetos Statement
Statement
se crean de esta
se crean de esta
forma:forma:Statement
Statement select = con.createStatement();
select = con.createStatement();
La interfaz
La interfaz
ResultSet ResultSetrepresenta un conjunto de datos resultado de una consulta SQL, para
representa un conjunto de datos resultado de una consulta SQL, para
acceder a los registros se emplea un cursor que inicialmente apunta antes del primer registro y
acceder a los registros se emplea un cursor que inicialmente apunta antes del primer registro y
para avanzar por los registros se emplea el metodo
para avanzar por los registros se emplea el metodo
ResultSet ResultSet .next().next()..
ResultSet ResultSetes de sólo
es de sólo
lectura:
lectura:
ResultSet
ResultSet nombres = select.exe
nombres = select.executeQuery ("SELECT *
cuteQuery ("SELECT * FROM Tabla ");
FROM Tabla ");
Las consultas
Las consultas
Statement Statementtienen métodos diferentes según el tipo de instrucción SQL empleada:
tienen métodos diferentes según el tipo de instrucción SQL empleada:
executeQueryexecuteQuery (String sql)(String sql)
: devuelve un objeto
: devuelve un objeto
ResultSet ,ResultSet ,que
que
contiene
contiene un
un conjunto
conjunto de
de
registros ; se utiliza cuando se usa SELECT.
registros ; se utiliza cuando se usa SELECT.
executeUpdateexecuteUpdate ( String sql)( String sql): ejecuta una
: ejecuta una
instruccion de tipo INSERT, UPDATE o DELETE
instruccion de tipo INSERT, UPDATE o DELETE
Dado que la utilización de un Driver de BD, iniciar una conexión y ejecutar las sentencias de
Dado que la utilización de un Driver de BD, iniciar una conexión y ejecutar las sentencias de
SQL para acceder a las tablas
SQL para acceder a las tablas de una BD se realizan cuando la aplicación esta en ejecución ;
de una BD se realizan cuando la aplicación esta en ejecución ;
esto puede generar 2 tipos de Excepciones :
esto puede generar 2 tipos de Excepciones :ClassNotFoundException
ClassNotFoundException yy SQLException
SQLException ((
Errores en tiempo de Ejecución) por lo cual Java obliga a utilizar la Instrucción que maneja las
Errores en tiempo de Ejecución) por lo cual Java obliga a utilizar la Instrucción que maneja las
Excepciones En Java:
try {
//Operaciones que pueden dar a lugar a una Excepción o error en tiempo de ejecución
cuando se realiza E/S
}
catch( Manejador Nombre)
{
// Acciones a ejecutar cuando se produzca la Excepción, para manejarla de la mejor
manera posible. Puede haber mas de una clausula catch si son mas de una las
excepciones
}
EJEMPLO COMPLETO (conexión con Microsoft Access con DSN)
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cn;
cn=DriverManager.getConnection("jdbc:odbc:dsnaccess","","");
Statement st=cn.createStatement();
ResultSet rs= st.executeQuery("Select * from facturas");
//Operaciones para mostrar los resultados de la consulta
cn.close();
} catch (ClassNotFoundException c) {
// TODO
System.out.println("ERROR CLASE NO HALLADA:"+c.toString());
} catch (SQLException f) {
// TODO
}
executeUpdate
Este es un método Statement que permite ejecutar instrucciones SQL de
tipoUPDATE, INSERT o DELETE y también CREATE TABLE , DROP TABLE y otros
dedefinición de tablas. Devuelve un entero que indica el número de filas
implicadas.Ejemplo:
try{
Statement st=con.createStatement();
st.executeUpdate("UPDATE clientes SET ”+ “sexo='V' WHERE sexo='H'");
}
catch (SQLException e){
System.out.println(e.getMessage()); }
excuteQuery
Este método permite ejecutar una consulta SELECT. Este tipo de consultas
devuelvenuna tabla, que en Java se representa con objetos de clase ResultSet. El método next
de esta clase permite avanzar de fila, mientras que hay varios métodos
getque
permitenobtener el valor de una columna. En el caso típico, el recorrido por una consulta se
hace:try{
Statement st=con.createStatement();
ResultSet rs=st.executeQuery(“SELECT * FROM empleados”); while(rs.next()){
System.out.println(rs.getString(“Nombre”)+ rs.getInt(“Edad”));
} }
catch (SQLException e){
System.out.println(“ERROR:”+ e.getMessage()); }
El método next permite ir al registro siguiente, devuelve false en el caso de que
noexiste un siguiente registro. Al avanzar por los registros, se pueden utilizar método
g e tpara obtener
valores.Los métodos get tienen como nombre
getseguido del tipo de datos a
recoger
(getString, getByte, getBigDecimal,...). Se les pasa entre comillas el
nombre
delcampo a recoger (nombre según esté puesto en la base de datos) o el número
de
camposegún el orden en el que aparezca en la tabla de la base de datos (el primer
campo es
el 1). Para ello hay que conocer la equivalencia entre los tipos SQL y los tipos
Java:tipo SQL tipo Javaequivalente
SMALLINT short
INTEGER o INT int
BIGINT long
NUMERIC(m,n) o DECIMAL(m,n) java.math.BigDecimal
FLOAT(n) float
REAL double
CHAR(n) String
VARCHAR(n) String
BOOLEAN o BOOL o BIT boolean
DATE java.sql.Date TIME java.sql.Time TIMESTAMP java.sql.Timestamp BINARY byte[] BLOB java.sql.Blob CLOB java.sql.Clob ARRAY java.sql.Array
w a s N u l l
Al leer un determinado campo con alguna función get puede ocurrir que el valor leído sea nulo. En ese caso se puede comprobar mediante la función booleana wasNull. Esa función devuelve true si la última función get obtuvo un valor nulo de la base de datos. Ejemplo:
int n=rs.getInt("Valor"); if (rs.wasNull()){
System.out.println("Se leyó un valor nulo"); }
Excepciones
en la base de datos
SQLException
En el paquete java.sql se encuentra la clase SQLException que captura
lasexcepciones ocurridas en el manejo de la base de datos. Su uso no difiere del resto
de
excepciones, pero incorpora nuevos métodos
interesantes:getSQLState. Describe el error según las convenciones
XOPEN.getMessage. El método típico de excepciones, salvo que éste recoge el texto
queenvía el controlador JDBC según lo informado por el gestor de bases de datos,
lo
que le hace muy
efectivo.getErrorCode. Devuelve el código de error ocurrido (según lo informado por
elgestor de la base de
datos)getNextException. Que permite ver la siguiente excepción ocurrida, ya que
aveces ocurren varias a la vez (especialmente en transacciones y
operaciones complejas).Ejemplo:
try{
//instrucciones de manejo de la base de datos
}
catch(SQLException e){ while(e!=null){ System.err.println("Estado: "+e.getSQLState()); System.err.println("Código: "+e.getErrorCode()); System.err.println("Mensaje: "+e.getMessage()); e.getNextException(); } }
resultados
con
posibilidades
de
desplazamiento
y
actualización.
JDBC
2.0
Se ha visto anteriormente como el objeto de clase ResultSet es el encargado
de
almacenar los resultados de una consulta
SELECT
creada
con
el
métodoexecuteQuery de la clase Statement. Este objeto se puede recorrer del
primerregistro al último mediante el método next y se puede obtener el valor de cada
campo
mediante métodos get (
getInt, getString, getBy te, getBigDecimal,... ).En JDBC 2.0 se puede además realizar recorridos en todas las direcciones sobre
losregistros e incluso añadir registros. Para ello el controlador debe ser compatible
conJDBC 2.0, de otro modo no se podrán utilizar estas
funciones.el método
createStatement
de la clase
Connection
Anteriormente vimos como una consulta se crea mediante un objeto
Statement elcual, a su vez, es creado utilizando el método
createStatement. Sin embargo
estemétodo puede utilizar dos argumentos que permiten indicar el tipo de
ResultSet queobtendría el
Statement.Esos dos argumentos son el tipo y la concurrencia
ypermiten utilizar estas
constantes.Para el tipo:
ResultSet.TYPE_FORWARD_ONLY
.El conjunto de resultados no
tendrádesplazamiento. Sólo se podrá utilizar el método next (este es el único valor
paraJDBC
1.0
y es
el
valor
predeterminado
si
se
construye
el
Statement
sin
argumentos).ResultSet
.TYPE_SCROLL_INSENSITIVE
.El conjunto de resultados
tendrádesplazamiento completo pero no tendrá en cuenta los
cambios.ResultSet.TYPE_SCROLL_SENSITIVE
Conjunto De Resultados con Desplazamiento y Sensibilidad a los
.
Para la concurrencia:
ResultSet.CONCUR_READ_ONLY.
La base de datos no puede ser modificada mediante el uso del conjunto de resultados
ResultSet.CONCUR_UPDATABLE.
Si se permite el desplazamiento, la clase ResultSet posee los siguientes métodos para desplazarse por los registros:
método uso
boolean next() Avanza el puntero de registros del conjunto de resultados al siguiente registro. Devuelve true si existe registro siguiente.
boolean previous() Coloca el puntero de registros en el registro anterior si lo hay, si no lo hay devuelve false
boolean absolute(int registro) Coloca el puntero de registros en la fila indicada. Si esa fila no existe, devuelve false. Si el número de fila se indica con un número negativo, la fila se cuenta desde el final.
método uso
boolean relative(int fila) Coloca el puntero de registros en la fila indicada a partir de la posición actual del puntero. Si esa fila no existe, devuelve false.
El número de fila se puede indicar de forma negativa y en ese caso el puntero se mueve hacia el primer registro (si es positivo se mueve hacia el final).
boolean first() Coloca el puntero en el primer registro. Si no hay primer registro, devuelve false
boolean last() Coloca el puntero en el último registro. Si no hay último registro, devuelve false
void beforeFirst() Coloca el puntero delante del primer registro. El método next se movería al primer registro si se utiliza tras esta orden. void afterLast() Coloca el puntero detrás del último registro.
El método previous se movería al último registro si se utiliza tras esta orden.
boolean isFirst() Devuelve true si el puntero está situado en el primer registro.
boolean isLast() Devuelve true si el puntero está situado en el último registro.
boolean isBeforeFirst() Devuelve true si el puntero está situado delante del primer registro.
boolean isAfterLast() Devuelve true si el puntero está situado detrás del último registro.
int getRow() Obtiene el número de registro actual
Modificación de datos
Los conjuntos de resultados se pueden utilizar también para modificar
losdatos obtenidos por la consulta SELECT (siempre y cuando sea posible). Para ello
senecesitan utilizar los métodos
update
de la clase
ResultSet
que permiten modificar
elcontenido de un campo en la posición actual del puntero de
registros.Se trata de un conjunto de métodos que comienzan con la palabra
updateseguida del tipo de datos Java del campo y un segundo parámetro que indica el
nuevovalor para el campo.
Ejemplo:rs.first(); //Si rs es un ResultSet, se coloca el puntero en
//el primer r egistro
rs.updateDouble(“Precio”,2.34); //El precio valdrá 2,34 en
//el primer registro
rs.updateString("tipo","tr");//El campo tipo valdrá tr
rs.updateRow();
El método
updateRow
es el que permite actualizar la base de datos con los
nuevoscambios. Se debe utilizar cuando estamos seguros de que los cambios son los
correctos.Si queremos anular los cambios se debe utilizar el método
cancelRowUpdates
Adición de datos
Para añadir un nuevo registro (una nueva fila) en el conjunto de resultados
obtenido.Hay
que emplear los métodos anteriores de modificación de datos (métodos
update)sobre
una fila especial conocida como
fila de inserción de registros.
1>
Colocar el cursor en la fila de inserción de registros mediante el
métodomoveToInsertRow.
2>
Actualizar los datos de los campos de ese nuevo registros usando los
métodosupdate
(
updateString, updateInt, updateBigDecimal,...).3>
Añadir el registro en la base de datos con
insertRow
(se puede cancelar
con
cancelRowUpdates
)4>
Colocar el cursor en la posición anterior utilizando
el
métodomoveToCurrentRow
.Borrar registros
Se puede borrar el registro actual del conjunto de resultados utilizando el método deleteRow .
Actualizar registro
El método refreshRow del ResultSet actualiza el valor del registro actual, según lo que valga ahora en la base de datos. Se usa por si acaso se ha modificado el valor de los datos
desde otro cliente de la base de datos.
INTRODUCCIÓN A LAS APLICACIONES DESKTOP CON N
ET
B
E
ANS
Ob j
e
tivos:
Que el Alumno:
1) Haga una aplicación de Mantenimiento Básica utilizando el asistente de NetBeans 6.1.
2) Utilice controles definiendo propiedades, métodos y otras configuraciones especiales.
3) Ejecute un programa que se conecta a MySQL, que fue creado de forma manual.
Verifique que el archivo
mys
ql-co
nnec
tor -
jav
a-5.1.5-
bi
n j.
ar este en la ruta que se muestra a
continuación:
C:
\Ar c
hivos de
programa\ApacheSof
tw
ar e
Foundation\ApacheTomcat 6.0.16\li
bSi no existe el Archivo, solicítelo a su instructor y cópielo en la ruta descrita anteriormente
3) Seleccione el Driver para Mysql
Defina la URL de la Base de Datos y el nombre de su Usuario
Recordatorio: Carnet es su NÚMERO DE CARNET, no la palabra car net
Con lo anterior aparecerá la siguiente Pantalla, la cual indicara si la conexión a la Base de Datos se ha realizado y entonces presione el BotónOK.
5) Haga la conexión a su Base de Datos (clic derecho del ratón) que contiene como nombre su número de carnet.
Presione el botón OK y aparecerá lo siguiente:
6) Haga una Java Aplicación Desktop, Seleccionando la Categoría Java y seleccionando el tipo de proyecto como se muestra en la figura
7) Como nombre del Proyecto escriba Alumnos, seleccione como ubicación del proyecto la carpeta que contiene su número de carnet, seleccione la Database Application y después presione el botón Next >.
8) Ahora procedemos a Seleccionar laDatabase Connection y laDatabaseTable, como se muestra a continuación,
seleccionando la tabla alumno que fue creada en la guía anterior.
10) Reconozca el entorno de Desarrollo para Aplicaciones Desktop.
11) Configuración de Botones, se les hará el siguiente cambio a los botones; ubíquese en cada botón y cámbieles el nombre oprimiendo el botón derecho del ratón seleccione el menú emergente properties, ubíquese en la propiedad text y cambie el nombre a cada botón tal como se muestra en la siguiente figura.
12) Una vez que se ha realizado el cambio de nombre para los botones, seleccione el objeto TextField para el Label Sexo y elimine ese objeto.
13) Utilizando la vista Design y la paleta (Palette) de controles de NetBeans, se procederá a realizar el siguiente cambio a su formulario, tome el objeto Combo Box y colóquelo donde estaba ubicado el objeto TextField para el objeto Label Sexo.
La siguiente figura muestra como deberá estar su formulario en estos momentos
Ahora procedemos a personalizar el nuevo objeto colocado en el formulario en el paso anterior
14) Ubíquese en el objeto Combo Box y presione el botón derecho del Mouse, seleccione la opción
propertiesdel menú emergente y realice los siguientes cambios:
En la propiedad name colóquele como nombre sexoField
En la propiedad model escriba M, F
15) Ubíquese en la pestaña Binding y realice los cambios para las propiedadesselectedItem y enabled, tal como se muestra en la figura
16) Proceda a configurar el objeto Combo Box sexoField en la pestaña Code, modifique la propiedad
VariableName.
17) Ahora proceda a ejecutar el proyecto tal como se describe a continuación; ubíquese en el proyecto Alumnos como se muestra en la siguiente figura
Seleccione este icono para compilar el proyecto
18) Al ejecutar la Aplicación Desktop aparecerá algo similar a la siguiente figura, efectué algunas pruebas, como ingresar nuevos datos, modificando datos existentes y borrar registros.
DATOSPERSONALES Nombre Apellidos Fechanac Telefono Salario
E
je
rcicio 2
Creación de Mantenimiento en
forma manual
(código
puro,
si
n
a
sis
te
n
tes).
Este Mantenimiento hace la creación de una tabla adicional a su esquema de Base de Datos, Esta Tabla es DatosPersonales. Char(20) Char(25) Date Char(10) Float
1) Cree un nuevo proyecto Java Application (No Web), nómbrelo pruebajdbcmanual, ubíquelo en la carpeta que
tiene como nombre su número de carnet; en el Create Main Class (Clase Principal) digitePruebaManual, tal como se muestra en la figura
2) Agregue el JAR de MySQL al proyecto; ubíquese en el objeto Libraries presione el botón derecho del Mouse y
seleccione el ítem del menú emergente Add JAR/Folder… como se muestra a continuación
Busque la carpeta
C:\Ar chivos de programa\Apache Sof twar eFoundation\ApacheTomcat 6.0.16\lib
Seleccione el driver de conexión para MySQL
Después de agregar el driver para MySQL, el proyecto quedará como muestra la siguiente figura
3) Este código de preferencia, cópielo y péguelo integro a su clase principal de la aplicación
package pruebajdbcmanual;
import java.util.*; import java.text.*;import java.awt.*;import java.sql.*;
import java.awt.event.*; Ajuste la cadena de conexión a su BD
class PruebaManualextends Frame implements ActionListener {Button crear, ver, insertar, cerr ar ;
TextField infor macion;
Panel pr incipal;Connectionconexion;
String Str ingConect=" jdbc:mysql://localhost:3306/car net?user =r oot";
PruebaManual( ) { super ("Datos Per sonales"); setSize(220,120);
pr incipal=new Panel(); crear=new Button("Cr ear "); cr ear .add ActionListener (this); ver =new Button("Mostr ar "); ver .add ActionListener (this);
insertar=newButton("Inser tar ");
inser tar .add ActionListener (this); cerrar=new Button("Cerr ar "); cerr ar .add ActionListener (this); infor macion=new TextField(20);
pr incipal.add(infor macion); pr incipal.add(cr ear ); pr incipal.add(inser tar );
pr incipal.add(ver ); pr incipal.add(cerr ar ); addWindowListener(new
Cerr ar ());
pr incipal.setBackgr ound(SystemColor .contr ol);
add(pr incipal); setVisible(tr ue); try {
Class.for Name("com.mysql. jdbc.Dr iver ").newInstance(); }//tr ycatch(Exception e) {
infor macion.setText("No se pudo cargarel DriverJDBC"); }// catch
}//Constructor datosper sonales
private void Crear_tabla() {
Statementsentencia ;
try { conexion=Dr iver Manager .getConnection(Str ingConect); sentencia=conexion.cr eateStatement();
try{
sentencia.executeUpdate("DROP TABLE IF EXISTS DATOSPERSONALES"); } // try inter no
catch(SQLExceptione){
informacion.setText("Error al Borrar la tabla"); System.out.pr intln(e);
}// catch inter no
sentencia.executeUpdate("CRE ATE TABLE DATOSPERSONALES ("+ "NOMBRE CH AR(20),"+
" APELLIDOS VARCH AR(25),"+
"FECH A_NAC DATE Not Null,"+ //Not Null significa que los datos son obligator ios
"TELEFONO CH AR(10),"+ "SAL ARIO FLOAT )");
// Creala Llave Primaria de la Tabla
sentencia.executeUpdate(" ALTER TABLE DATOSPERSONALES " + " ADD CONSTRAINT PK_DATOSPERSON " +
"PRIM ARY KEY USING BTREE (Nombr e, Apellidos)" ); infor macion.setText("Tabla Cr eada");
conexion.close() ;
} // try exter no catch(SQLExceptione){ }
} // Cr ear _ tabla
public void actionPerformed(ActionEvent e) {String
com=e.getActionCommand() ;
if("Crear".equals(com)) {
infor macion.setText("") ;
Crear_tabla(); }// ifCr ear else
if ("Insertar".equals(com)) { new Insertar(this) ;
}// if Inser tar else
if ("Mostr ar ".equals(com)) { new Ver (this);
} // if Ver else {
dispose(); System.exit(0);
}
} // actionPer for med
class Cerrarextends WindowAdapter {
public void windowClosing(WindowEvente) {
dispose(); System.exit(0);
}// windowClosing } //Cerr ar
public static void main(String ar gs[]) { new Pr uebaManual();
}// main
} //datosper sonales
class Insertarextends Dialog implements ActionListener { private Connectionconexion;
private Button incluir ,ter minar ;
private TextField nombr e,apellidos,fech _ nac,telefono, salario ;
Insertar(Framef)
{
super(f,"InsertarDatos",tr ue);
setSize(320,210); nombr e=new TextField(20); apellidos=new TextField(25); fech _ nac=new TextField(10); telefono=new
TextField(10); salar io=new TextField(12); incluir =new
Button("Incluir ");
incluir .add ActionListener (this);
terminar=new Button("Ter minar "); ter minar .add ActionListener (this); Panel P_Datos=newPanel();
P_Datos.add(new Label("Nombr e : "));
P _Datos.add(nombr e);
P_Datos.add(new Label(" Apellidos: "));
P _Datos.add(apellidos);
P_Datos.add(new Label("FechaNacimiento:")); //Formatoyyyy-mm-dd P _Datos.add(fech _ nac);
P_Datos.add(new Label("Telefono : "));
P _Datos.add(telefono);
P_Datos.add(new Label(" ")); P_Datos.add(new Label("Salario : "));
P _Datos.add(salar io);
P_Datos.add(new Label(" "));
P _Datos.add(incluir );
P _Datos.add(ter minar );
nombr e.setEditable(tr ue);
apellidos.setEditable(tr ue); fech_nac.setEditable(true); telefono.setEditable(tr ue);
salar io.setEditable(tr ue);
add(P _Datos); setVisible(tr ue); }
privatevoid insertar_fila() {
Statementsentencia;
String Str ingConect=" jdbc:mysql://localhost:3306/car net?user =r oot"; tr y{
conexion=Dr iver Manager .getConnection(Str ingConect); sentencia=conexion.cr eateStatement();
String sql_ add="INSERT INTO DATOSPERSONALES VALUES (' " +
nombr e.getText().toUpper Case() + "', '" +
apellidos.getText().toUpper Case() + "','"+
fech_nac.getText()+"','" +telefono.getText() +"', "
+ salar io.getText()+")" ; sentencia.executeUpdate(sql_ add); }//tr y
catch(SQLExceptione){ } }// insertar_fila
public void actionPerformed(ActionEvent e) {
String com=e.get ActionCommand();
if ("Incluir ".equals(com)) { inser tar _fila(); nombr e.setText(""); apellidos.setText(""); fech _ nac.setText(""); telefono.setText(""); salar io.setText(""); }else { if(conexion!=null) { try { conexion.close(); }catch(SQLExceptionex) { } }// ifdispose(); } // else }// actionPer for med }//Inser tar
class Verextends Dialog implements ActionListener { private Connectionconexion;
private ResultSet r esultado;
private Button siguiente,terminar, anterior, primero, ultimo;
private TextField nombre,apellidos, fech_nac, telefono, salario;
Ver(Framef) { super(f,"Mostrar Datos",tr ue); setSize(330,210); nombre=new TextField(20); apellidos=new TextField(25); fech_nac=new TextField(10); telefono=new TextField(10); salar io=new TextField(12);
anterior=new Button(" Anter ior ");
anter ior .add ActionListener (this);
siguiente=new Button("Siguiente"); siguiente.add ActionListener (this); primero=new Button("Pr imer o");
pr imer o.add ActionListener (this);
ultimo=new Button("Ultimo");
ultimo.add ActionListener (this);
terminar=new Button("Finalizar "); ter minar .add ActionListener (this); Panel
P_Datos=newPanel();
P_Datos.add(new Label("Nombr e :"));
P _Datos.add(nombr e);
P_Datos.add(new Label(" Apellidos:"));
P _Datos.add(apellidos);
P_Datos.add(new Label("Fecha Nacimiento:”));
P _Datos.add(fech _ nac);
P_Datos.add(new Label(" ")); P_Datos.add(new Label("Telefono : "));
P _Datos.add(telefono);
P_Datos.add(new Label(" ")); P_Datos.add(new Label("Salario : "));
P _Datos.add(salar io);
P_Datos.add(new Label(" "));
P _Datos.add(anter ior );
P _Datos.add(siguiente);
P _Datos.add(pr imer o); P _Datos.add(ultimo);
P _Datos.add(ter minar );
add(P _Datos);
nombr e.setEditable(f alse);
apellidos.setEditable(f alse); fech _ nac.setEditable(f alse); telefono.setEditable(f alse); salar io.setEditable(f alse); mostr ar ();
setVisible(tr ue); }// Constructor Ver
public void actionPerformed(ActionEvente) { String
com=e.get ActionCommand(); if ("Siguiente".equals(com))
siguiente(); else
if (" Anter ior ".equals(com))
anter ior (); else
if ("Pr imer o".equals(com))
Pr imer o();
else