Vous êtes sur la page 1sur 57

PROGRAMACIN ORIENTADA A OBJECTOS CON JAVA.

DIEGO ARMANDO GMEZ MOSQUERA


diegomez@jvsoftware.com
diegomezusb@yahoo.com
diegojava@hotmail.com

Tabla de Contenido.
1
2
3

OBJETIVOS..................................................................................................4
CONTENIDO.................................................................................................5
INTRODUCCION AL LENGUAJE DE PROGRAMACION JAVA..................6
3.1
Historia de java.......................................................................................6
3.2
Qu es java?........................................................................................7
3.3
Cmo trabaja la plataforma Java?.......................................................7
3.4
Caractersticas del Lenguaje Java.........................................................8
3.4.1
Simple.............................................................................................8
3.4.2
Portable...........................................................................................8
3.4.3
Interpretado.....................................................................................9
3.4.4
Orientado a objetos.........................................................................9
3.4.5
Seguro...........................................................................................10
3.4.6
Dinmico.......................................................................................10
3.4.7
Multihilo.........................................................................................10
3.5
Java VS Otros lenguajes......................................................................11
4 CONOCIENDO JAVA..................................................................................12
4.1
Qu es JDK?......................................................................................12
4.2
Tipos de aplicaciones en Java.............................................................12
4.2.1
Java Applets..................................................................................12
4.2.2
Aplicaciones Standalone...............................................................12
4.2.3
Paquetes (package)....................................................................13
4.2.4
Java Servlets.................................................................................13
4.2.5
Jsp (Java Server Page)................................................................13
4.2.6
Java Beans...................................................................................13
4.3
La API de Java.....................................................................................14
4.3.1
java.lang........................................................................................14
4.3.2
java.lang.io....................................................................................14
4.3.3
java.util..........................................................................................14
4.3.4
java.net..........................................................................................14
4.3.5
java.awt.........................................................................................15
4.3.6
java.applet.....................................................................................15
5 LENGUAJE DE PROGRAMACION JAVA PARTE I....................................16
5.1
Comentarios en Java...........................................................................16
5.1.1
Comentario de una lnea...............................................................16
5.1.2
Comentario de mltiples lneas...................................................16
5.2
Palabras reservadas del lenguaje java................................................16
5.3
Operadores en Java.............................................................................17
5.4
Variables y tipos de datos....................................................................17
5.5
Nombres validos para las variables.....................................................18
5.6
Declaracin de Variables.....................................................................18
5.7
Control de flujos...................................................................................19
5.7.1
Toma de decisiones......................................................................19
5.7.2
Buclas...........................................................................................22
5.8
Arreglos................................................................................................25
5.8.1
Declaracin de matrices...............................................................26
5.9
Cadenas de Caracteres.......................................................................26

5.9.1
Sintaxis de declaracin de cadenas.............................................26
5.9.2
Operacin de cadenas..................................................................27
5.10 Estructura de los archivos JavaTM......................................................30
5.10.1 Paquetes.......................................................................................30
5.10.2 Importar paquetes.........................................................................31
5.11 Modificadores de acceso.....................................................................32
5.11.1 Modificador public.........................................................................32
5.11.2 Modificador private........................................................................32
5.11.3 Modificador default........................................................................32
5.11.4 Modificador protected...................................................................33
5.11.5 Visibilidad de los modificadores....................................................34
5.11.6 El modificador static......................................................................34
6 LENGUAJE DE PROGRAMACION JAVA PARTE II...................................35
6.1
Herencia...............................................................................................35
6.2
Polimorfismo.........................................................................................37
6.3
Interfaces..............................................................................................41
7 ACCESO A BASE DE DATOS CON JAVA: JDBC......................................44
7.1
Qu es JDBC?...................................................................................44
7.2
Tipos de controladores JDBC(Java Database Conectivity).................44
7.2.1
Nivel 1...........................................................................................45
7.2.2
Nivel 2...........................................................................................46
7.2.3
Nivel 3...........................................................................................47
7.2.4
Nivel 4...........................................................................................48
7.3
Estructura general de una aplicacin JDBC........................................49
7.4
El API java.sql......................................................................................49
7.4.1
Clases e Interfaces del paquete java.sql......................................49
7.5
Tipos de datos JDBC a tipos de datos Java........................................52
7.6
Un Programa en Java para el acceso a una Base de Datos...............53

1 OBJETIVOS

Conocer acerca de la programacin orientada a objetos con el lenguaje


de programacin java.
Conocer el manejo de las sentencias bsicas del lenguaje de
programacin java.
Aprender a construir aplicaciones en java que acceden a bases de datos
mediante el uso de JDBC.

2 CONTENIDO

Introduccin al lenguaje de programacin java.


Conociendo java.
Lenguaje de programacin java parte I.
Lenguaje de programacin java parte II.
Acceso a base de datos con java: JDBC.

3 INTRODUCCION AL LENGUAJE DE
PROGRAMACION JAVA.

3.1 Historia de java


A finales de los aos ochenta Sun Microsystems decide introducirse en el
mercado de la electrnica de consumo y ms concretamente en los equipos
domsticos, incluyendo la televisin interactiva.
Java, nace como un lenguaje ideado en sus comienzos para programar
electrodomsticos y microcircuitos.
En principio se deseaba que java tuviera las siguientes caractersticas:
Interfaces cmodas e intuitivas.
Fiabilidad y facilidad de desarrollo
Portabilidad.
Con esta idea en mente comenz a trabajar James Gosling en 1990 liderando
un pequeo grupo de desarrollo. Gosling decidi que las ventajas de eficiencia
de C++ no compensaban el gran coste de pruebas y depuracin. Por otro lado,
lenguajes como C y C++ deben ser compilados para un chip, y si se cambia el
chip, todo el software debe compilarse de nuevo. Este era un problema clave
en el campo de la electrnica de consumo. Gosling decide crear un nuevo
lenguaje de programacin ms apropiado. Ese lenguaje llegara a convertirse
en lo que hoy da se conoce como JAVA.

3.2 Qu es java?
Java es una nueva forma de computacin basada en el poder de las redes y en
la idea de que el mismo software funcione en diferentes tipos de maquinas sin
importar su arquitectura o sistema operativo.

3.3 Cmo trabaja la plataforma Java?


Los programas escritos en java corren en diferentes plataformas debido a la
maquina virtual de java o JVM (Java Virtual Machine). Este es una capa
intermedia que se encarga de interpretar las instrucciones java y ejecutarlas.
Es por esto que Java es Independiente de la plataforma.

3.4 Caractersticas del Lenguaje Java.


Java es conocido por las siguientes siete caractersticas.

Simple
Portable
Interpretado
Orientado a Objetos
Seguro
Dinmico
Multihilo

3.4.1 Simple
Desde el nacimiento del lenguaje esa fue su meta. Este lenguaje oculta toda la
dificultad que trae el programar en lenguajes orientados a objetos como C++ y
Perl y oculta la complejidad del uso de punteros.

3.4.2 Portable
Java es portable debido a su maquina virtual la cual interpreta el cdigo Java y
lo ejecuta sin importar el sistema operativo.

Lo anterior tambin se debe a su Compilador el cual genera cdigo


transportable entre diferentes plataformas el cual es llamado bytecode o los
conocidos .Class
Un ejemplo de estos son los estndares en cuanto a el tamao de los datos,
en C++ un entero puede tener un tamao 16, 32 o mas bits, siendo la nica
limitacin que el entero sea mayor que un short y menor que un longint,
mientras que en Java los enteros siempre tendrn el mismo tamao sin
importar el sistema operativo.

3.4.3 Interpretado.
La JVM interpreta el bytecode generado por el compilador, a diferencia de
leguajes como C o C++ en los cuales las instrucciones son procesadas
directamente por el sistema operativo, haciendo que los programas no sean
portables.
El que java sea interpretado hace que su velocidad sea 7 veces mas baja que
leguajes como C++, sin embargo la potencialidad de Java se debe a que es un
lenguaje interpretado.

3.4.4 Orientado a objetos


Es un lenguaje orientado a objetos debido a que implementa todas las
caractersticas de los lenguajes orientados a objetos. Caractersticas tales
como Clases, Objetos, Encapsulamiento, Herencia, Polimorfismo, etc.

3.4.5 Seguro
En la programacin de componentes distribuidos la seguridad es algo muy
importante, java implementa cuatro aspectos de seguridad

Polticas de Seguridad.
Privacidad.
Autenticacin.
Seguridad.

3.4.6 Dinmico
Java remueve el manejo de memoria dinmica del programador, el manejo de
objetos se hace por medio de referencias, el programador no tiene la
dispendiosa tarea de liberar memoria puesto que java implementa un recolector
de basura que es encarga de esto.

3.4.7 Multihilo
Que es Multihilo?
Es la posibilidad de que un programa haga diferentes tareas al mismo tiempo,
la mayora de programas de PC son de un hilo lo que quiere decir que si se
lanza una tarea el programa tiene que esperar a que esta termine para seguir
con otra.
En Java es posible construir aplicaciones que ejecuten diferentes tareas al
mismo tiempo.
Un ejemplo aplicaciones Multihilos son los sistemas operativos que permiten
desarrollar diferentes tareas al mismo tiempo.

3.5 Java VS Otros lenguajes.


Java
Simple

OO
Robusto
Seguro
Interpretado
Dinmico
Portable
Neutral
Multihilo
Rec. Basura
Excepciones
Rendimiento

S
S
S
S
S
S
S
S
S
S
S
Alto

SmallTalk
S
S
S
Regular
S
S
Regular
Regular
No
S
S
Medio

Perl
Regular
S
S
S
S
Si
No
S
S
No
S
Medio

C
Regular
No
No
No
No
No
Regular
No
No
No
No
Muy Alto

C++
No
Regular
S
S
No
No
Regular
No
No
No
S
Muy Alto

4 CONOCIENDO JAVA

4.1 Qu es JDK?
El JDK (Java Developers Kit) Kit de desarrollo de java, son un conjunto de
herramientas como un interpretador de java, un compilador, un descompilado,
un generador automtico de documentacin HTML entre otros.
El JDK proporciona las herramientas bsicas para un programador, pero estas
no son del todo productivas por lo cual es necesario utilizar IDE para el
desarrollo en java.
Actualmente existen entornos de desarrollo gratuitos muy potentes que hacen
que Java sea muy productivo, entre los cuales se encuentra eclipse, NetBeans,
JDeveloper, Forte y kawa entre otros.
No obstante es posible trabajar en java con un simple editor de texto y utilizar el
compilador de Java despus de haber escrito el cdigo, utilizando la siguiente
sentencia.
C:\> Javac miprograma.java

4.2 Tipos de aplicaciones en Java


Java Applets
Aplicaciones Standalone.
Paquetes (package)
Java Servlets
Jsp
Java Beans

4.2.1 Java Applets


Son aplicaciones muy pequeas que se ejecutan al lado del cliente, utilizando
un browser.

4.2.2 Aplicaciones Standalone.


Son aplicaciones que no necesariamente necesitan un Browser para ser
ejecutadas, estas son ejecutadas a travs de la JVM.

4.2.3 Paquetes (package)


Un paquete es un repositorio en el cual se encuentran un conjunto de clases,
las cuales tiene un propsito comn. Un ejemplo de esto es el java.awt o
java.util de Java de las cuales hablaremos ms adelante.

4.2.4 Java Servlets


Es una aplicacin que se ejecuta en el lado del servidor lo que quiere decir que
esta aplicacin no viaja hasta el cliente para ser ejecutada con la maquina
virtual del browser, por el contrario esta es ejecutada en el servidor por la
maquina virtual del servidor.
Los Servlets se han convertido en la principal herramienta en el desarrollo de
aplicaciones Web con java, debido a su simplicidad y velocidad.

4.2.5 Jsp (Java Server Page)


Una pagina JSP es un archivo de texto simple que consiste en contenido HTML
o XML con contenido java embebido esta es compilado en el servidor al igual
que los servlets.

4.2.6 Java Beans


Un Java Bean es un componente utilizado en Java que permite agrupar
funcionalidades para formar parte de una aplicacin. Los Java Beans son
utilizados para hacer productiva la programacin de aplicaciones.

4.3 La API de Java


La Interfaz de Programa de Aplicaciones de Java o API son un conjunto de
clases desarrolladas por Sun para ser usadas por el lenguaje de programacin
Java.
Las clases en Java se agrupan en paquetes entre las cuales tenemos.
java.lang
java.corba
java.awt
java.io
java.sql
java.util
java.applet

4.3.1 java.lang
Este paquete consiste de clases que son el corazn del lenguaje JAVA. Este
paquete incluye no slo envolturas para los tipos de datos bsicos como
Integer y String, sino tambin la manera de manejar errores por medio de las
clases Throwable y Error.

4.3.2 java.lang.io
El paquete java.io sirve como la biblioteca estndar de entrada y salida para el
lenguaje JAVA. Este paquete le permite un nmero ilimitado de posibilidades de
comunicacin al proporcionarle tanto tipos sencillos como la clase
StringBufferInputStream o complejos como la clase RandomAccessFile.

4.3.3 java.util
Este paquete es, esencialmente, una variedad de clases tiles que no
pertenecen a ningn otro paquete. Entre estas clases prcticas se encuentran
la clase Date, diseada para manipular y manejar las operaciones con fechas,
la clase Hashtable y los TADs (Tipos Abstractos de Datos), como Stack y
Vector.

4.3.4 java.net
Ya que JAVA es un lenguaje basado en red, este relativamente pequeo
paquete resulta ser muy til. Sobre todo, le proporciona la capacidad de
Comunicarse con otras fuentes de informacin creando o conectndose a
sockets o haciendo uso de los URLs y direcciones de Internet.

4.3.5 java.awt
El Abstract Window Toolkit (AWT) de JAVA contiene los recursos que usted
necesita para crear interfaces atractivas y tiles para sus applets. El AWT no
slo tiene herramientas de control, como el LayoutManager y Container, sino
que tambin cuenta con herramientas interactivas concretas, como Button
y TextField.

4.3.6 java.applet
El paquete java.applet proporciona una sola clase y tres interfaces, pero es uno
de los paquetes ms usados porque es la base de todos los applets. La clase
Applet es de suma importancia porque es necesaria cuando se crea un applet.
Tambin es til la interfaz AppletContext, la cual se usa para interactuar con el
Navegador.

5 LENGUAJE DE PROGRAMACION JAVA PARTE I

5.1 Comentarios en Java


En Java existen dos tipos de comentarios, los de una linea y los de mltiples
lneas

5.1.1 Comentario de una lnea


//Este es un comentario de una lnea

5.1.2 Comentario de mltiples lneas


/*Este cometario tiene
Varias
lneas */

5.2 Palabras reservadas del lenguaje java.


Las palabras reservadas son aquellas que no pueden ser usadas por el
programador como variables ni ningn otro uso para el cual no fueron hechas.
Palabras reservadas
abstract
case
class
do
final
future
implements
int
new
package
rest
super
throw
var

boolean
cast
const
double
ninally
generic
import
interface
null
private
return
switch
throws
void

break
catch
continue
else
float
goto
inner
long
operator
protected
short
synchronized
transient
volatile

byte
char
default
extends
for
if
instanceof
native
uter
public
static
this
try
while

5.3 Operadores en Java


En java existen operadores unarios y binarios, los unarios son los que tiene un
solo operador y los binarios son los que tiene dos operadores.
Un operador unario es el + y un Binario es el &&.
En java existen los siguientes tipos de operadores:
Aritmticos.
Relacinales
Condicionales
Desplazamiento
Asignacin
Lista de diferentes operadores en Java.

Tipo
Aritmticos
Relacinales
Condicionales
Desplazamiento
Asignacin

+
>
&&
>>
+=

>=
||
<<
-=

Operador
*
/
%
<
<= ==
!
>>> & |
*=
/= %=

^=

<<=

>>=

|=

++
!=

--

^
~
&=

>>>=

5.4 Variables y tipos de datos.


Todas las variables en el lenguaje Java deben tener un tipo de dato. El tipo de
la variable determina los valores que la variable puede contener y las
operaciones que se pueden realizar con ella.
Existen dos categoras de datos principales en el lenguaje Java: los tipos
primitivos y los tipos referenciados.
Los tipos primitivos contienen un slo valor e incluyen tipos como los enteros,
flotantes, caracteres, etc.
Los tipos referencia son los objetos, ya sean los creados por el programador o
los propios de java como los String.

Tipos de datos primitivos


Tipo
byte
short
int
long
float
double
char
boolean

Tamao
8 bits
16 bits
32 bits
64 bits
32 bits
64 bits
16 bits
1 bit

Descripcin
Entero 1 byte
Entero corto
Entero
Entero largo
Pres. simple
Pres. doble
1 carcter
true/false

5.5 Nombres validos para las variables.


Debe ser un identificador legal de Java comprendido en una serie de
caracteres Unicode. Unicode es un sistema de codificacin que soporta texto
escrito en distintos lenguajes humanos. Unicode permite la codificacin de
34.168 caracteres.
El nombre a utilizar no puede ser el mismo que una palabra clave o el nombre
de un valor booleano (true or false). Tampoco deben tener el mismo nombre
que otras variables cuyas declaraciones aparezcan en el mismo mbito.

5.6 Declaracin de Variables


Sintaxis
TipoDeDato identicador=valorInicial;
Ejemplo
Declaracin de Variables con tipos Nativos.
int i=0;
long j;
float f,l,k;
Declaracin de variables con tipos referenciados
String s= new String(La vida es Bella);
String cadena=Hola Mundo;
Usuario= new Usuario;

5.7 Control de flujos


Las sentencias de control de flujo determinan el orden en que se ejecutarn las
otras sentencias dentro del programa. El lenguaje Java soporta varias
sentencias de control de flujo, incluyendo:
Toma de decisiones
Ciclos o bucles
Excepciones
Rompimiento de flujo

5.7.1 Toma de decisiones


5.7.1.1 La estructura de seleccin if

Verdadero

Calif>=3.0

Imprimir
Aprobado

Falso

Cdigo en java
if(Calif>=3.0)
{
System.out.println("Aprobado");
}

5.7.1.2 La estructura de control if-else

Imprimir
Reprobado

Verdadero

Falso

Calif>=3.0

Cdigo en java
if(Calif>=3.0)
{
System.out.println("Aprobado");
}else{
System.out.println("Reprobado");

Imprimir
Aprobado

5.7.1.3 La estructura switch

Cdigo en java
switch(valor){
case1:
System.out.println("Opcion1");
break;
case2:
System.out.println("Opcion1");
break;
case3:
System.out.println("Opcion1");
break;
default:
System.out.println("NingunaOpcion");
break;
}

5.7.2 Buclas
5.7.2.1 Bucla for

Cdigo Java
for(inti=0;i<10;i++){
System.out.println("NumerodeVeces:"+i);
}

5.7.2.2 Bucla while

Codigo Java
while(enumeration.hasMoreElements()){
typeelement=(type)enumeration.nextElement();
}

5.7.2.3 Bucla do while

Cdigo Java
do{
}while(condition);

5.8 Arreglos
Un arreglo es un tipo compuesto de variables del mismo tipo, estas variables
pueden ser a su vez de tipos simples (tipos primitivos) o compuestos (objetos).
Los arreglos pueden ser de una o ms dimensiones, y cada dimensin se
especifica con un par de corchetes.
Sintaxis para declarar arreglos
tipo identificador[];
tipo[] identificador;
Cdigo java
intnumeros[];
Stringcadenas[];

El tamao del arreglo se debe especificar por medio del operador new como se
muestra en el siguiente ejemplo:
identificador = new tipo[tamao];
Codigo java
numeros=newint[100];
cadenas=newString[100];

El ndice de un arreglo inicia desde la posicin 0, y este debe ser declarado


como un tipo de dato entero (int).

5.8.1 Declaracin de matrices.


En este caso el primer valor de los corchetes especifica que la matriz tiene 3
filas, y el segundo valor declara que la matriz tiene 2 columnas.
floatmatriz[][];
matriz=newfloat[3][2];

Columnas 2

Filas 3

0
0
0

0
0
0

5.9 Cadenas de Caracteres


En Java las cadenas de caracteres son manejadas por la clase String, los
literales tipo cadena son en realidad instancias de esta clase, por eso estas
permite realizar operaciones con las cadenas, tales como determinar su
longitud, trabajar con cada uno de los caracteres, extraer subcadenas, etc.

5.9.1 Sintaxis de declaracin de cadenas.


String identificador="valor inicial";
Codigo Java
Stringcadena="Hoyesundafro";

Existen diferentes formas de declarar las cadenas en Java, en el ejemplo


anterior se declara la variable y se le asigna un valor. En el siguiente ejemplo
se usa el constructor de la clase String, String(cadena).
Stringcadena;
cadena=newString("Hoyesundafro");

5.9.2 Operacin de cadenas


length() : devuelve la longitud de la cadena
charAt(indice): devuelve el carcter en el ndice
equals(String): devuelve true si los String son iguales
equalsIgnoreCase(String): compara ignorando maysculas y
minsculas.
startsWith(String): devuelve true si el objeto inicia con el String
especificado.
endsWith(String): devuelve true si el objeto termina con el String
especificado.
indexOf(char): determina la posicin de la primera ocurrencia de un
carcter.
substring(inicio, fin): devuelve un String de una cadena iniciando en la
posicin de inicio y terminando una posicin antes del fin.
valueOf(tipo primitivo): mtodo esttico que devuelve la cadena
correspondiente al tipo que se le pase como argumento.

Ejemplos:
En este ejemplo se muestra la declaracin de arreglos de enteros y el manejo
de dos tipos de buclas.
publicclassArreglos{
/**
*ConstructorforArreglos.
*/
publicArreglos(){
super();
}
publicstaticvoidmain(String[]args){
//Declaracindeunarreglodeenteros
int[]arreglo;
//Declaracindetamaodelarreglo
arreglo=newint[10];
//Buclaparallenarelarregloconnumerosparesdel2al
18
for(inti=0;i<10;i++){
arreglo[i]=i*2;
}
//BuclaParaimprimirlosvaloresqueseencuentranenel
arreglo
intj=0;
while(j<arreglo.length){
System.out.println(""+arreglo[j]);
j=j+1;
}
}
}

En el siguiente ejemplo se hace una breve ilustracin de la declaracin de


cadenas, y algunas operaciones con estas.
publicclassCadenas{
/**
*ConstructorforCadenas.
*/
publicCadenas(){
super();
}
publicstaticvoidmain(String[]args){
//Declaraciondecadenasdetresformasdiferentes
Strings1,s2,s3;
s1=newString("Lavida");
s2="es";
s3=null;
//Operacionesconcadenas
//Tamaodelacadenaconelmtodolength()
System.out.println("Tamaodelacadenas1:"+s1.length());
//Asignacindeunvaloraunacadena
s3="Bella";
//Sumadelascadenass1,s2,s3elresultadoesLavidaes
bella
System.out.println("SumadeCadenas:"+s1+""+s2+""+s3);
//Comparacindecadenas,comparaelvalordelacadenas2
con"es"
//Sisonigualeselmtodoequalsretornatrue
if(s2.equals("es")==true){
System.out.println("Lascadenassoniguales");
}
//Imprimelaposicinenlaqueseencuentralaletrad
System.out.println("Posicion:"+s1.indexOf("d"));
}
}

5.10 Estructura de los archivos JavaTM.


Lo primero que se debe tener en cuenta es que la estructura de construccin
de un archivo fuente de Java es la siguiente:
package
import
class y/o interface
Ese orden debe permanecer intacto, sino se van a obtener errores de
compilacin. En Java existe la posibilidad de crear varias clases en un mismo
archivo mientras que ninguna de las clases sea pblica, es posible darle
cualquier nombre al archivo que almacena las clases.

5.10.1

Paquetes.

A travs del comando package se provee una forma para agrupar algunas
clases que poseen relaciones por sus caractersticas, la utilidad ms esencial
de la utilizacin de esta sentencia es para la creacin de libreras.
El nombre del paquete debe coincidir fsicamente con el nombre del directorio
donde se pretende almacenar dichas clases.
Por ejemplo la clase Ejemplo contenida dentro del paquete
com.diegomez.modelo debe ser almacenada dentro de tres directorios as:
com/diegomez/modelo/Ejemplo.java
package com.diegomez.modelo;
public class Ejemplo {
/**
*
*/
public Ejemplo() {
super();
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
}
}

5.10.2

Importar paquetes

La sentencia import, es la que se encarga de importar clases pertenecientes a


paquetes que se necesitan para la clase que se esta desarrollando.
import java.lang.Math;
El import anterior es usado para importar la clase Math del API matemtica de
Java.
Tambin es posible hacer un import de la totalidad de las clases de un paquete
con la siguiente instruccin.
Import java.lang.*;

5.11 Modificadores de acceso.


Los modificadores son palabras reservadas en Java que restringen la
visibilidad de las clases, mtodos y atributos. En total son 12 modificadores de
acceso, default (no se escribe nada), public, private, protected, final, abstract,
static, volatile, transient, native, synchronized y strictfp.
En este tutorial solo se estudiaran los modificadores public, private, protected
default y static.

5.11.1Modificador public.
El modificador public es el mas comn y el mas fcil de comprender. Puede
aplicarse a una clase, mtodo o variable, este modificador implica que todo el
universo puede tener acceso a ese componente, es decir, si se declara una
clase publica el resto de clases tiene acceso a ella, si se declara un mtodo
publico todos tiene acceso a ese mtodo siempre y cuando se cumplan las
reglas de accesibilidad para la clase, lo mismo ocurre con las variables o
atributos declaradas publicas.

5.11.2Modificador private.
Este modificador solo puede ser usado en los mtodos y variables internas. En
las clases no se pueden utilizar ya que no tiene sentido crear una clase privada
(rompe con los paradigmas orientado a objetos). Algo como esto es incorrecto.
privateclassEjemplo{}//Errordecompilacin

Cuando se declara una variable o mtodo privado, se esta indicando que solo
la misma clase tendr acceso al mtodo o variable.

5.11.3Modificador default.
El modificador por default se puede utilizar tanto en una clase, mtodo o
variable, este modificador indica que solamente podrn acceder al elemento
aquellas clases o subclases que pertenecen al mismo paquete, incluida la clase
que posee componentes por default.
En el siguiente ejemplo dos clases pblicas ClaseA y ClaseB dentro de un
paquete. ClaseB llama a un mtodo de la ClaseA que esta declarado por
default.

public class ClaseA {


void metodoClaseB(){
System.out.println("Mtodo clase A");
}

public class ClaseB {


public void metodoClaseB(){
ClaseA claseA=new ClaseA();
claseA.metodoClaseA();
}
}

Sin embargo, puede ocurrir que por ejemplo se trate de acceder desde fuera
del paquete, en ese caso no compilara ya que las reglas del default lo impiden.
package com.diegomez.modelo;
import carpeta.ClaseA;
public class ClaseC extends ClaseA {
public void metodoClaseC(){
metodoClaseA();
}
}

5.11.4Modificador protected.
El modificador protected solamente se aplica a los mtodos, variables y clases
o interfaces internas. Java no acepta la declaracin de una clase de tipo
protected. Algo como esto no se puede hacer.
protected class Class1(){} //Error de compilacin.

La principal diferencia con el modificador default, es que protected permite


acceder al elemento desde una subclase que no pertenece al paquete.
public class ClaseA {
protected void metodoClaseA(){
System.out.println("Mtodo clase A");
}
}
public class ClaseC extends ClaseA {
public void metodoClaseC(){
metodoClaseA();
}
}

5.11.5Visibilidad de los modificadores.


Visibilidad
Desde la misma clase.
Desde cualquier clase del mimo paquete.
Desde una subclase del mismo paquete.
Desde una subclase fuera del paquete.
Desde cualquier no-subclase fuera del paquete.

public
Si
Si
Si
Si
Si

protected
Si
Si
Si
Si
No

default
Si
Si
Si
No
No

private
Si
No
No
No
No

5.11.6El modificador static.


Java acepta que se utilice el modificador static para los mtodos y las
variables, las clases no pueden ser declaradas static. Es decir algo como esto
no se puede hacer.
static class Clase1(){}//Error de compilacin

Sin embargo se puede decir que una clase es esttica cuando todos sus
mtodos y atributos son estticos.
La caracterstica del modificador static implica que solamente se creara en
memoria un espacio para el elemento declarado, sin importar la cantidad de
instancias que se pudiesen obtener de la clase que contenga el elemento.

6 LENGUAJE DE PROGRAMACION JAVA PARTE II

En este parte del documento estudiaremos la programacin orientada a objetos


(OOP, object-oriented programing) y las principales tecnologas que la
componen: herencia y poliformismo.
Para hacer esta explicacin ms fcil de entender para los lectores usare
diagramas en UML y el cdigo asociado a este.

6.1 Herencia
La herencia es una forma de reutilizacin del software en la que se crean
nuevas clases a partir de clases ya existentes absorbiendo sus atributos,
comportamientos y adornndolos con capacidades que las nuevas clases
requieren.
Para entrar al concepto de herencia es necesario conocer los conceptos de
Superclases y Subclases.
Una superclase es la clase padre de una subclase, pero esta a su vez puede
ser una superclase de otra subclase, en el siguiente ejemplo la clase Persona
es la superclase y Alumno es la subclase de la Superclase Persona.

Superclase

Subclase

El cdigo Java asociado al diagrama anterior es el siguiente


La Superclase.
publicclassPersona{
protectedStringnombre;
protectedStringsexo;
protectedintedad;
//Constructordelaclasepersona
Persona(Stringnombre,Stringsexo,intedad){
this.nombre=nombre;
this.sexo=sexo;
this.edad=edad;
System.out.println("constructorPersona()");
}
}

Si observas en la parte en que se crea la clase Alumno tiene la palabra extends


lo que quiere decir que Alumno extiende de Persona por eso es que la clase
Alumno no tiene las variables nombre, sexo, edad pero las recibe y las
almacena debido a que la clase base o superclase tiene el manejo de estas,
esto es posible mediante el uso del operador super la cual se refiere al
constructor de la superclase.
PublicclassAlumnoextendsPersona{
protectedStringNoBoleta;
//ConstructordelaclaseAlumno
Alumno(Stringnombre,Stringsexo,intedad){
super(nombre,sexo,edad);
System.out.println("constructorAlumno()");
}
publicvoidsetNoboleta(Stringnoboleta)
{
NoBoleta=noboleta;
}
publicStringgetNoboleta(Stringnoboleta)
{
returnNoBoleta;
}
}

El ejemplo anterior es un ejemplo trivial pero el programador podra extender


de clases mucho ms complejas y con muchos ms mtodos como las clases
HttpServlet, Jframe o Applet y crear nuevas funcionalidades que sean
necesarias para una necesidad en particular.

6.2 Polimorfismo
El polimorfismo nos permite escribir programas de forma general para manejar
una amplia variedad de clases interrelacionadas existentes y por especificar. El
poliformismo facilita la adicin de capacidades nuevas a un sistema. La
herencia y el polimorfismo son tcnicas eficaces para lidiar con la complejidad
del software.
Para ser posible implementar el poliformismo es necesario el uso de clases
abstract y mtodos abstract, para el caso de las clases abstract nos permiten
heredar funcionalidad de esta como cualquier otra clase.
Los mtodos abstract en la Superclase son creados pero sin ninguna
funcionalidad, debido a que estos deben ser implementados en las subclases
con la funcionalidad que sea necesaria para esta.
Como en el ejemplo de la herencia presentaremos un diagrama UML y su
cdigo en Java.

Cdigo Java.
Superclase Empleado
publicabstractclassEmpleado{
privateStringapellido;
privateStringnombre;
publicEmpleado(StringNombre,StringApellido)
{
this.nombre=newString(Nombre);

this.apellido=newString(Apellido);
}
publicStringgetApellido(){returnapellido;}
publicvoidsetApellido(Stringapellido){this.apellido=
apellido;}
publicStringgetNombre(){returnnombre;}
publicvoidsetNombre(Stringnombre){}
/*Mtodosabstractosquedebenserimplementados
paracadatipodeempleado*/
abstractdoublecalculosalario();
}

Subclase Jefe
publicclassJefeextendsEmpleado{
privatedoublehoras;
publicdoublegetHoras(){returnhoras;}
publicvoidsetHoras(doublehoras){
this.horas=horas;
}
publicJefe(Stringnombre,StringApellido,doublehora)
{
//LlamaalconstructordelaclasebaseoEmpleado
super(nombre,Apellido);
setHoras(hora);
}
/*Aqusefijaelsalariodeljefequetieneuna
unaformadiferentedecalcularlo*/
publicdoublecalculosalario()
{
returnhoras*120000;
}
//SupereditoelmtodotoString
publicStringtoString()
{
return"Jefe:"+getNombre()+""+getApellido();
}

Subclase Vendedorcomision
publicfinalclassVendedorcomisionextendsEmpleado{
privatedoublecomision;
privateinttotalArticulos;
privatedoublesalary;
//Constructor
publicVendedorcomision(Stringnombre,Stringapellidos,double
salario,doublecomision,intarticulos)
{
super(nombre,apellidos);
setComision(comision);
setSalary(salario);
setTotalArticulos(articulos);
}
publicdoublegetComision(){returncomision;}
publicvoidsetComision(doublecomision){this.comision=
comision;}
publicintgetTotalArticulos(){
returntotalArticulos;
}
publicvoidsetTotalArticulos(inttotalArticulos){
this.totalArticulos=totalArticulos;
}
publicdoublegetSalary(){returnsalary;}
publicvoidsetSalary(doublesalary){this.salary=salary;}

publicdoublecalculosalario()
{
returnsalary+(comision*totalArticulos);
}
//SupereditoelmtodotoString
publicStringtoString()
{
return"VendedorComision:"+getNombre()+""+getApellido();
}
}

Subclase Obrero
publicfinalclassObreroextendsEmpleado{
privatedoublesalarioPorPieza;
privateintcantidadPiezas;
publicObrero(Stringnombre,Stringapellido,double
salporpieza,intcantidadpieza)
{
super(nombre,apellido);
setSalarioPorPieza(salporpieza);
setCantidadPiezas(cantidadpieza);
}
publicdoublegetSalarioPorPieza(){returnsalarioPorPieza;}
publicvoidsetSalarioPorPieza(doublesalarioPorPieza){
this.salarioPorPieza=salarioPorPieza;}
publicintgetCantidadPiezas(){
returncantidadPiezas;
}
publicvoidsetCantidadPiezas(intcantidadPiezas){
this.cantidadPiezas=cantidadPiezas;
}
publicdoublecalculosalario()
{
returncantidadPiezas*salarioPorPieza;
}
//SupereditoelmtodotoString
publicStringtoString()
{
return"Obrero:"+getNombre()+""+getApellido();
}
}

Como se puede observar para cada subclase la forma de calcular el salario del
empleado es diferente y solo la clase sabe como hacerlo, el siguiente cdigo
muestra como sacarle provecho a las ventajas que nos ofrece el poliformismo.
publicclassPolimorfismo{
/**
*ConstructorforPolimorfismo.
*/
publicPolimorfismo(){
super();
}
publicstaticvoidmain(String[]args){
//Secreaunarreglodetipoempleado
Empleadoarray[];
array=newEmpleado[3];
Jefejefe;

Obreroobrero;
Vendedorcomisionvendedor;
//Secreantrestiposdeempleadosdiferentes
jefe=newJefe("Pepe","Ventas",24);
obrero=newObrero("Carlos","Carrera",10,20);
vendedor=newVendedorcomision("Diego","Gomez",100,10,50);
/*Sealmacenajefe,obrero,vendedorenelarraydetipo
*Empleado*/
array[0]=jefe;
array[1]=obrero;
array[2]=vendedor;
/*Serecorreelarreglodetipopersonayseimprimeel
*nombredecadaempleadosinimportareltipoy
*seCalculaelsalariodecadaunosinimportarlaforma
*enquesecalculaestoesposibledebidoael
polimorfismo*/

for(inti=0;i<array.length;i++){
System.out.println(""+array[i].toString());

System.out.println("Salario:"+array[i].calculosalario());
}
}
}

Si usted observa los objetos jefe, obrero y vendedor son de diferentes tipos
pero se almacenan en un array de tipo Empleado, esto es posible debido a que
la clase Empleado es abstract y los objetos jefe, obrero y vendedor extienden
de Empleado. El Array de tipo Empleado toma diferentes formas segn se el
caso. Adema si observa la lnea donde se calcula el salario solo se le dice al
array que calcule el salario y el sabe como debe calcular este segn el tipo de
empleado.

6.3 Interfaces.
Una interfaz es como una clase pero que no permite que ninguno de sus
mtodos sea implementado. Adems, con las interfaces se crea el concepto de
herencia mltiple en Java. De tal manera, la regla indica que en una interfaz no
se debe realizar ninguna implementacin de mtodo, sino proveer la firma con
la cual otras clases pueden efectuar la implementacin.
La interfaz tiene como caracterstica que las variables que se declaran dentro
de ellas son consideradas como constantes y estticas.
public class MiClase implements MiInterface {
public static void main(String args[]){
System.out.println(i);
}

Las interfaces son una de las principales herramientas usadas en el concepto


de frameworks debido a que permiten la abstraccin de funcionalidades de un
conjunto de componentes tales como libreras.
El siguiente ejemplo es la implantacin del diseo de un reproductor multimedia
de formatos avi, mp3 y wav.
El la implantacin se encuentran cuatro componentes el primero es la interfaz
reproductor la cual tiene la declaracin de los principales mtodos usados para
la funcionalidad del reproductor los mtodos son play, bucle y stop.
package com.diegomez.modelo;
public interface Reproductor {
// Comienza la reproduccin
void play();
// Reproduce el clip en un bucle
void bucle();
// Detiene la reproduccin
void stop();
}

Los otros tres componentes son la implementacin de la interfaz para la


reproduccin de los diferentes formatos, como se puede observar a
continuacin.
package com.diegomez.modelo;
public class ReproductorAvi implements Reproductor {
public ReproductorAvi() {
super();
}
public void play() {
//Implementacin del cdigo reproduccin de AVI
}
public void bucle() {
//Implementacin del cdigo para reducir reproduccin AVI
}
public void stop() {
//Implementacin del cdigo detener reproduccin de AVI
}
}
package com.diegomez.modelo;
public class ReproductorMp3 implements Reproductor {
public ReproductorMp3() {
super();
}
public void bucle() {
//Implementacin del cdigo para reducir reproduccin MP3
}

public void play() {


//Implementacin del cdigo reproduccin de MP3
}
public void stop() {
//Implementacin del cdigo detener reproduccin de MP3
}

package com.diegomez.modelo;
public class ReproductorWav implements Reproductor {

public ReproductorWav() {
super();
}
public void play() {
//Implementacin del cdigo reproduccin de WAV
}
public void bucle() {
//Implementacin del cdigo para reducir reproduccin WAV
}
public void stop() {
//Implementacin del cdigo detener reproduccin de WAV
}

En cada una de las clases el programador que implementa la interfaz debe


escribir el cdigo para la funcionalidad del componente. El siguiente es el
diseo en UML del reproductor.

interface
Reproductor

+play:void
+bucle:void
+stop:void

ReproductorAvi ReproductorWav ReproductorMp3

+ReproductorAvi
+play:void
+bucle:void
+stop:void

+ReproductorWav
+play:void
+bucle:void
+stop:void

+ReproductorMp3
+bucle:void
+play:void
+stop:void

7 ACCESO A BASE DE DATOS CON JAVA: JDBC.

7.1 Qu es JDBC?
JDBC(Java Database Conectivity) es el API estndar de acceso a bases de
datos usando el lenguaje de programacin Java. Esta API se incluye con el kit
de desarrollo de Java versin 1.1 y posteriores.
Java no usa ODBC directamente Sun Microsystems creo una nueva API debido
a que ODBC utiliza funciones de bajo nivel que no son compatibles 100% con
Java, como lo son los punteros, esto hacia que java perdiera portabilidad.
Para poder hacer esto posible Sun se une a Intersolv para desarrollar un
puente entre JDBC y ODBC, ya que el acceso a bases de datos con ODBC es
un modelo estndar.

7.2 Tipos de controladores JDBC(Java Database Conectivity)


Existen cuatro niveles de controladores JDBC.
Nivel 1: Puente JDBC-ODBC.
Nivel 2: Parcialmente hecho en Java.
Nivel 3: Protocolo de Red. 100% Java.
Nivel 4: Protocolo Nativo de la BD. 100% Java.

7.2.1 Nivel 1
Este fue desarrollado por JavaSoft usa el driver ODBC especfico para la Base
de Datos, requiere que el ODBC se encuentre disponible en la mquina cliente
donde se ejecuta la aplicacin JAVA.
El siguiente grafico muestra la arquitectura del driver de nivel 1.

7.2.2 Nivel 2
Este utiliza JAVA para hacer llamadas al API de acceso (protocolo) del DBMS
que debe estar disponible en el cliente. El driver es una implementacin
parcialmente hecho en JAVA por JavaSoft.
El siguiente grafico muestra la arquitectura del driver de nivel 2.

7.2.3 Nivel 3
Utiliza los protocolos de red que vienen con el JDK para conectarse a un
servidor. En el servidor se traducen los requerimientos a transacciones del
DBMS.
No requiere cdigo ejecutable en el lado del cliente (del API de acceso al
DBMS). El protocolo de red que se utiliza es genrico, por lo tanto el mismo
driver puede acceder a diferentes DBMS.
El siguiente grafico muestra la arquitectura del driver de nivel 3.

7.2.4 Nivel 4.
Driver completamente escrito en JAVA este se comunica directamente a la base
de datos con el protocolo de red del DBMS.
Esta comunicacin directa se implementa a travs de conexiones de red
(sockets).
El siguiente grafico muestra la arquitectura del driver de nivel 4.

Los Drivers para conectarse a la bases de datos son provistos por el proveedor
de la base de datos o en la siguiente direccin del sitio Java, de Sun
Microsystem http://java.sun.com/products/jdbc

7.3 Estructura general de una aplicacin JDBC.


Cuando se desea hacer una conexin a una base de datos y procesar sus
datos se deben seguir los pasos que se muestran en el siguiente grafico.

Estos pasos se pueden encontrar en cdigo Java al final de esta explicacin


con un ejemplo.

7.4 El API java.sql


El API java.sql proporciona un conjunto de clases e interfaces hechas en java
para hacer mas fcil las conexiones a las bases de datos.

7.4.1 Clases e Interfaces del paquete java.sql


Driver
DriverManager
DriverPropertyInfo
Connection
DatabaseMetadata
Statement
PreparedStatement
CallableStatement
ResultSet
ResultSetMetadata

Jerarqua de Clases del paquete java.sql

Estas clases son usadas para la conexin y manipulacin de bases de datos


con Java.
Grafica de Interfaces del paquete java.sql

7.4.1.1 Clase SQLExeception


Esta clase provee un mecanismo para el control de errores cuando se desea
acceder una base de datos. Un objeto del tipo SQLException contiene lo
siguiente:
Una descripcin del error.
Una cadena (SQLState) identificando el error.
Un cdigo de error.
La clase SQLException es de vital importancia cuando se desea hacer una
conexin a una base de datos, debido a que Java no permite hacer conexiones
a bases de datos si no existe un bloque para atrapar excepciones.
Este es un ejemplo de un bloque para atrapar excepciones en java.
try{
//BloqueconsentenciasdeJDBC
}
catch(SQLExceptionex){
System.out.println(ErrorSQL:+ex.getMessage());
System.out.println(Estado:+ex.getSQLState());
}

7.5 Tipos de datos JDBC a tipos de datos Java.


En el siguiente cuadro se ilustra el tipo que se debe usar en java segn sea la
necesidad del tipo usado en la base de dato.
JDBC
CHAR
VARCHAR
LONGVARCHAR
NUMERIC
DECIMAL
BIT
TINYINT
SMALLINT
INTEGER
BIGINT
REAL
FLOAT
BINARY
VARBINARY
LONGVARBINARY
DATE
TIME
TIMESTAMP

JAVA
String
String
String
java.math.BigDecimal
java.math.BigDecimal
boolean
byte
short
int
long
float
double
byte[]
byte[]
byte[]
java.sql.Date
java.sql.Time
java.sql.Timestamp

7.6 Un Programa en Java para el acceso a una Base de Datos.


El siguiente ejemplo se hace una conexin a una base de datos y se muestran
los datos de la tabla Usuarios en pantalla.
En aras de simplificar nuestro ejemplo creare una base de datos en mySql con
el nombre de seminario, la cual tendr dos tablas, una con el nombre de
estudiante y otra con el nombre de notas.
Sql para crear la tabla estudiantes
CREATE TABLE estudiantes(
codigo int(9) PRIMARY KEY,
nombres varchar(30) NOT NULL,
apellidos varchar(30) NOT NULL,
email varchar(30) NOT NULL
);
Sql para crear la tabla notas
CREATE TABLE notas(
codigoestudiante int(9) NOT NULL REFERENCES estudiantes,
nombremateria varchar(30) NOT NULL,
nota float(4) NOT NULL
);
Sql para insertar los estudiantes
INSERT INTO estudiantes
(codigo,nombres,apellidos,email)VALUES
(982689,'Francisco','Pineda','franpi@yahoo.com');
INSERT INTO estudiantes
(codigo,nombres,apellidos,email)VALUES
(984682,'Diego Armando','Gomez Mosquera','diegomezusb@yahoo.com');
INSERT INTO estudiantes
(codigo,nombres,apellidos,email)VALUES
(1001245,'Jorge Ivan','Marmolejo Hurtado','jimarmol@yahoo.com');

Sql para insertar las notas de los estudiantes


INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(984682,'Algoritmia',4.5);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(984682,'Calculo',4.5);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(984682,'Ingenieria de Software',4.5);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(982689,'Algoritmia',3.5);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(982689,'Calculo',2.4);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(982689,'Ingenieria de Software',4.0);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(1001245,'Algoritmia',4.5);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(1001245,'Calculo',5.0);
INSERT INTO notas
(codigoestudiante,nombremateria,nota)VALUES
(1001245,'Ingenieria de Software',3.5);
Despus de haber creado la base de datos entraremos al tema de este
documento la conexin y manejo de los resultados con JDBC en Java.

Ejemplo 1
Este programa se conecta a la base de datos y saca los datos de los
estudiantes que se encuentran en la tabla estudiantes, usando los cinco pasos
mencionados anteriormente.
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
/**
*@authorDiegoArmandoGmez
*/
publicclassJdbcEjemplo1{
/**
*ConstructorforJdbcEjemplo1.
*/
publicJdbcEjemplo1(){
super();
}
publicstaticvoidmain(String[]args){
Connectionconnection;
ResultSetrs;
Statementst;
Stringsql="SELECT*FROMestudiantes;";

try{
/*Enestalineasecargaeldriver
*JDBCnivel4demySql*/
//Paso1CargareldriverJDBC
Class.forName("com.mysql.jdbc.Driver");
}catch(Throwablee){
//SeAtrapalaexecption
System.out.println("ErrorCargandoel
Driver"+e.toString());
}
//Conexionymanipulaciondedatos
try{
//paso2Conectarsealabasededatos
connection=
DriverManager.getConnection("jdbc:mysql://127.0.0.1/seminario","","");
//Paso3CrearelobjetoStatement
st=connection.createStatement();
//Paso4EjecutarlasentenciaSQl
rs=st.executeQuery(sql);
//Paso5Procesarlosresultados
while(rs.next()){
System.out.println("Codigo:"+rs.getInt("codigo"));

System.out.println("Nombre:"+rs.getString("nombres"));
System.out.println("Apellidos:"+rs.getString("apellidos"));
System.out.println("email:"+rs.getString("email"));
}
rs.close();
st.close();
connection.close();
}catch(SQLExceptionse){
System.out.println("Error:"+se.toString());
}
}
}

Ejemplo 2.
Este programa pide el cdigo de un estudiante, se conecta a la base de datos
busca las notas de el estudiante en la base de datos utilizando un
PreparedStatement el cual es diferente al Statementdebido a que esta es una
instruccin precompilada lo que la hace ser mas rpida.
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
/**
*@authorDiegoArmandoGmez
*/
publicclassJdbcEjemplo2{
/**
*ConstructorforJdbcEjemplo2.
*/
publicJdbcEjemplo2(){
super();
}
publicstaticvoidmain(String[]args){
Connectionconnection;
ResultSetrs;
PreparedStatementpst;
Stringsql="SELECT*FROMestudiantes;";
java.io.BufferedReaderl=newjava.io.BufferedReader(new
java.io.InputStreamReader(System.in));
Stringcod=newString();

try{
/*Enestalineasecargaeldriver
*JDBCnivel4demySql*/
//Paso1CargareldriverJDBC
Class.forName("com.mysql.jdbc.Driver");

}catch(Throwablee){
//SeAtrapalaexecption
System.out.println("ErrorCargandoel
Driver"+e.toString());
}
//Conexionymanipulaciondedatos
try{
//paso2Conectarsealabasededatos
connection=
DriverManager.getConnection("jdbc:mysql://127.0.0.1/seminario","","");
//Leedelaconsolaelcodigodelestudiante
System.out.print("Digiteelcodigo:");
cod=l.readLine();
//Paso3CrearelobjetoprepareStatement
pst=connection.prepareStatement("SELECT*FROMnotas
wherecodigoestudiante=?");
pst.setInt(1,Integer.parseInt(cod));
//Paso4EjecutarlasentenciaSQl
rs=pst.executeQuery();
//Validaqueelrstengadatos
if(rs.next()!=true)
{
System.out.println("Noexisteelestudiante");
}
//Paso5Procesarlosresultados
while(rs.next()){
System.out.println("Nombre
Materia:"+rs.getString("nombremateria"));
System.out.println("Nota:"+rs.getFloat("nota"));
}
rs.close();
pst.close();
connection.close();
}catch(Throwablese){
System.out.println("Error:"+se.toString());
}
}
}

Si puede observar la sentencia connection.prepareStatement la lnea SQL


tiene un signo de interrogacin lo que indica que este es un parmetro que
posteriormente ser entregado al sql. El parmetro es entregado en la linea
pst.setInt(1,Integer.parseInt(cod)); que se encuentra en la parte inferior,
esto hace posible que cada vez que se digita un cdigo sea posible utilizar la
misma sentencia SQL.

Vous aimerez peut-être aussi