• No se han encontrado resultados

Manual Oficial de Lenguajed e Programacion-I- 3er ciclo (Reparado).docx

N/A
N/A
Protected

Academic year: 2021

Share "Manual Oficial de Lenguajed e Programacion-I- 3er ciclo (Reparado).docx"

Copied!
135
0
0

Texto completo

(1)
(2)
(3)

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

(4)

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 are 

ee

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 s

C 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.

(5)

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.

(6)

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.

(7)

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.

(8)

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.

(9)

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

(10)

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:

(11)

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>.

(12)

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.

(13)

5. Agregue el código de los atributos, constructores y métodos siguientes a la clase:

CCirculo

.java

(14)

-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.

.

(15)

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.

(16)

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>.

(17)

JMenu

Este componente p

er 

m

i

t

e agregar l

a

t

í

p

i

c

a

barra de menús que

c

a

si

todo p

og

a

m

a

po

see

.

De

l

a

m

is

m

a

manera que

lo

JButton, los

menús mostrados en

l

a

barra

se

c

a

mb

i

a

n d

e

texto con

clic

derecho

y l

u

e

go

en

“Ed

i

t

T

e

x

t

.

Para agregar más menús a

l

a

barra, se da clic derecho sobre un área

v

a

c

í

a

l

a

m

is

m

a

barra

y

a

l

final d

el

cuadro d

es

p

le

g

a

b

le

,

  clic sobre

 Add

JM

e

nu

.

Y para agregar Ítems o

con

t

e

n

i

do

dentro de cada menú,

le da clic

derecho sobre

el

JM

e

a

l que se le

qu

ier e

a

ñ

a

d

ir

con

t

e

n

i

do

y en l

a

parte inferior de

l

a

lis

ta,

con

l

a

opc

i

ón  Ad d encontramos

l

o

s

componentes que se pueden

a

g

e

g

a

.

Si

observa

el Inspector de Objetos, se dará cuenta de que bajo l

a

barra

de menú

v

a

n

a

p

a

e

c

ie

ndo

l

o

s

JM

e

nu

,

JM

e

nu

Ite

m

s

y

demás componentes que hemos

a

ñ

a

d

i

do

a

l menú,

a

si

que para modificar

el

texto que mostrará cada uno de

ell

o

s

,

es

n

e

c

es

a

i

o

sele

cc

i

on

a

r

el

objeto,

y l

u

e

go

en

l

a

zona de p

op

ie

d

a

d

es

,

con

l

a

opción T

e

x

t,

c

a

mb

i

a

mo

s

d

i

cho

t

e

x

t

o

.

JComboBox

Componente que muestra una

lis

ta

d es

p

le

g

a

b

le

.

Para

a

ñ

a

d

ir

l

o

s

textos

que

ser 

á

n

mostrados en

l

a

lis

ta,

sele

cc

i

on

a

mo

s el

ComboBox ,

y l

u

e

go e

n

l

a

zona d

e

p

op

ie

d

a

d

es

buscamos

l

a

opción Model

l

a

cu

a

l muestra un

cuadro de

d

i

á

l

ogo qu

e

p

er 

m

i

t

e

ir

a

ñ

a

d

ie

ndo textos con

el

bo

t

ón “ Add”

,

y

l

u

e

go

de

a

ñ

a

d

ir l

o

s

,

c

a

mb

i

a

les

d

e

posición con

l

o

s

con

t

o

les

Up

y

Down

,

e

d

i

ta

o eli

m

i

n

a

r  su

con

t

e

n

i

do

.

Este JComboBox p

er 

m

i

t

e acceder a

c

a

d

a

uno de

l

o

s

componentes

lis

ta

do

s

po

r

m

e

d

i

o d

e

l

o

s

métodos g

e

t

S

ele

c

t

e

dInd

e

x

()

y

g

e

t

S

ele

c

t

e

d

Ite

m

()

;

el

p

i

m

er 

o

retorna

l

a

posición d

el

objeto

sele

cc

i

on

a

do

y

el

segundo retorna un objecto.

(18)

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.

(19)
(20)

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

 j

e

mp

l

o

,

el

pr 

i

m

e

r  JSp

i

nn

e

r es usado en conjunto con un Sp

i

nn

e

r Numb

e

r Mod

el

,

el

cu

al

soporta una

se

cu

e

nc

ia

de números

doublés

o i

n

t

.

 Ad

e

m

ás

puede

es

p

e

c

i

i

c

a

l

o

s

v

al

or 

es

m

á

x

i

mo

s y

m

í

n

i

mo

s

p

e

r m

iti

do

s

,

el

v

al

or  inicial y

la

c

a

n

ti

d

a

d de cada

i

ncr 

e

m

e

n

t

o

o

decremento. Para definir

esto, accedemos a

la

opc

i

ón mod

el

de

la

zona de pr op

ie

d

a

d

es

de este

JSp

i

nn

e

,

y en el

cuadro de d

iál

ogo qu

e aparece, sele

cc

i

on

a

mo

s

la

opción User Code

y

co

l

oc

a

mo

s el si

gu

ie

n

te

cód

i

go:

new javax.swing.Spinner Number Model ( inicial, min, max, incr emento )

Y l

óg

i

c

a

m

e

n

te

,

ee

mp

la

z

a

mo

s

las

v

a

ia

b

les

por

el

v

al

or  que

d

esea

mo

s

.

El

segundo JSp

i

nn

e

r es usado con un Sp

i

nn

e

r L

ist

Mod

el

el

cu

al muestra l

o

s

v

al

or 

es

d

e

i

n

i

do

s

en un

a

rr 

e

g

l

o de objetos

o

en una

lista

.

El

tercer JSp

i

nn

e

r  es usado con Sp

i

nn

e

r D

ate

Mod

el y

un D

ate

Ed

it

or 

,

con

lo

cu

al el

JSp

i

nn

e

r soporta una

se

cu

e

nc

ia

de f 

e

ch

as

.

Desde netbeans, estas pr op

ie

d

a

d

es y

f unc

i

on

ali

d

a

d

es

a

d

i

c

i

on

ales

no se pueden

a

gr 

e

g

a

r d

i

e

c

ta

m

e

n

te

por m

e

d

i

o de

la

i

n

te

r f 

a

z gr 

á

i

c

a

.

Este

ti

po de p

e

s

on

ali

z

a

c

i

ón qu

e

soportan

l

o

s s

p

i

nn

e

es s

o

l

o po

si

b

le e

d

ita

ndo

el

código

y

agregando estos mod

el

o

s

.

Este

t

u

t

or 

ial está e

nc

a

m

i

n

a

do por ahora

s

o

l

o

a la

cr 

ea

c

i

ón de

i

n

te

r f 

a

c

es

(21)

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.

(22)

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

se

tengan que comunicar con el interfaz JDBC. Éste

es el encargada de comunicarse

con

los 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

el

funcionamiento de JDBC. Por supuesto, es necesario adquirir un controlador

JDBC

para el sistema gestor de base de datos que utilicemos. La comunicación

fundamental

(23)

controladores( Drivers)

Una vez instalado, configurado y puesto en funcionamiento nuestro sistema gestor

de

base de datos favorito, si queremos que las bases de datos creadas por él sean

accesibles

desde 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

es

la pasarela JDBC-ODBC.

No es muy productiva ya que necesita ser

configurada

para un controlador ODBC concreto. aunque actualmente

existen

mejores

soluciones 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

escritos

en el código nativo que comunica con el API de la base de datos. En

estos

controladores hay que instalar tanto paquetes Java como paquetes de

código

nativo, lo que no les hace válidos para

Internet.

Ilustración 3, Funcionamiento del controlador 

JDBC de tipo 2

(24)

Tipo 3. Son paquetes puros de Java que usan protocolos independientes de

la

base 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

tener

instalado ningún software de librería de la base de datos. Lo

malo es que

el

servidor intermedio (middleware) suele requerir instrucciones

(25)

Ilustración 4, Funcionamiento del controlador 

JDBC de tipo 3

Tipo 4. Paquetes de Java puro que traducen peticiones JDBC a protocolo de

base

de datos específico. No requieren intermediarios entre el software JDBC y la

base

de

datos

Ilustració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.

(26)

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

mediante

el 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

el

caso 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

se

encontró la clase en el driver

JDBC).

Una vez que el controlador se ha registrado,

entonces se abre la URL a la base

de

datos. 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

MySQL

(27)

Por ejemplo

Por ejemplo en SQL Server

en SQL Server

20052005

 jdbc: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. La

construcció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

lala

contraseñ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

dede

realizar 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.

(28)

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

(29)

Interfaz

Interfaz

S t a t e m e n tS t a t e m e n t

la interfaz

la interfaz

Statement Statement 

permite 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

dede

la 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.

LosLos

objetos

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 ResultSet 

  representa 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 ResultSet 

es 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 Statement 

 tienen 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:

executeQuery 

executeQuery (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:

(30)

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

(31)

}

executeUpdate 

Este es un método Statement que permite ejecutar instrucciones SQL de

tipo

UPDATE, INSERT o DELETE y también CREATE TABLE , DROP TABLE y otros

de

definició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

devuelven

una 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

get

que

permiten

obtener 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()); }

(32)

El método next permite ir al registro siguiente, devuelve false en el caso de que

no

existe un siguiente registro. Al avanzar por los registros, se pueden utilizar método

g e t

para obtener

valores.

Los métodos get tienen como nombre

get

seguido del tipo de datos a

recoger

(getString, getByte, getBigDecimal,...). Se les pasa entre comillas el

nombre

del

campo a recoger (nombre según esté puesto en la base de datos) o el número

de

campo

segú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"); }

(33)

Excepciones

en la base de datos

SQLException

En el paquete  java.sql se encuentra la clase SQLException que captura

las

excepciones 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

que

enví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

el

gestor de la base de

datos)

getNextException. Que permite ver la siguiente excepción ocurrida, ya que

a

veces 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étodo

executeQuery de la clase Statement. Este objeto se puede recorrer del

primer

registro al último mediante el método next y se puede obtener el valor de cada

(34)

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

los

registros e incluso añadir registros. Para ello el controlador debe ser compatible

con

JDBC 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 el

cual, a su vez, es creado utilizando el método

createStatement 

. Sin embargo

este

método puede utilizar dos argumentos que permiten indicar el tipo de

ResultSet que

obtendría el

Statement.

Esos dos argumentos son el tipo y la concurrencia

y

permiten 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

para

JDBC

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.

(35)

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.

(36)

 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

los

datos obtenidos por la consulta SELECT (siempre y cuando sea posible). Para ello

se

necesitan utilizar los métodos

update

de la clase

ResultSet

que permiten modificar

el

contenido 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

update

seguida del tipo de datos Java del campo y un segundo parámetro que indica el

nuevo

valor 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

nuevos

cambios. 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.

(37)

1>

Colocar el cursor en la fila de inserción de registros mediante el

método

moveToInsertRow.

2>

 Actualizar los datos de los campos de ese nuevo registros usando los

métodos

update

(

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étodo

moveToCurrentRow

.

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

t

ivos:

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.

(38)

Verifique que el archivo

m

ys

q

l-co

nn

ec

t

or -

 ja

v

a

-5.1.5-

b

i

n j

.

a

r  este en la ruta que se muestra a

continuación:

C:

\Ar c

h

ivos de

programa\Apache

Sof 

t

w

a

r e

Foundation\Apache

Tomcat 6.0.16\li

b

Si no existe el Archivo, solicítelo a su instructor y cópielo en la ruta descrita anteriormente

(39)

3) Seleccione el Driver para Mysql

(40)

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.

(41)
(42)

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

(43)
(44)

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 >.

(45)
(46)

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.

(47)
(48)

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.

(49)

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

(50)
(51)

15) Ubíquese en la pestaña Binding y realice los cambios para las propiedadesselectedItem y enabled, tal como se muestra en la figura

(52)
(53)

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

(54)

Seleccione este icono para compilar el proyecto

(55)

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.

(56)

DATOSPERSONALES Nombre  Apellidos Fechanac Telefono Salario

E

 j

e

cicio 2

Creación de Mantenimiento en

forma manual

(código

puro,

si

n

a

sis

t

e

n

t

es).

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

(57)
(58)

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

(59)
(60)

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 {

(61)

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 {

(62)

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);

(63)

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);

(64)

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

Referencias

Documento similar

Fuente de emisión secundaria que afecta a la estación: Combustión en sector residencial y comercial Distancia a la primera vía de tráfico: 3 metros (15 m de ancho)..

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

En junio de 1980, el Departamento de Literatura Española de la Universi- dad de Sevilla, tras consultar con diversos estudiosos del poeta, decidió propo- ner al Claustro de la

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

[r]

SVP, EXECUTIVE CREATIVE DIRECTOR JACK MORTON

Social Media, Email Marketing, Workflows, Smart CTA’s, Video Marketing. Blog, Social Media, SEO, SEM, Mobile Marketing,