Cuaderno Lenguaje de Programacion Johan Ortiz

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 101

INSTITUTO TECNOLÓGICO SUPERIOR

QUITO METROPOLITANO

CUADERNO DIGITAL DE LA ASIGNATURA

“LENGUAJE DE PROGRAMACION 2”
“ING. VIVIANA FLORES”

“JOHAN ORTIZ”
SEPTIEMBRE 2021 – ABRIL 2022

EJERCICIOS VECTORES
CLASE PADRE
public class AlgortimosOrdenamiento {
//métodos de ordenamiento
public void metodoBurbuja(int vector[]) { //8,4,6,2
int temp;
for (int i = 0; i < (vector.length - 1); i++) { //i=4
for (int j = i + 1; j < vector.length; j++) { //j=4
//i=3
//j=4
if (vector[j] < vector[i]) {
//6<8 -> v
temp = vector[i]; //8
vector[i] = vector[j];//6
vector[j] = temp;
}
}
}
}

public void metodoShell(int vector[]) {//8,4,6,2


int temp;
boolean bandera;
//Generando los saltos
for (int salto = vector.length / 2; salto != 0; salto = salto / 2) { //salto= 1
//salto=1
bandera = true;
while (bandera) { //-> bandera==true
bandera = false;
for (int i = salto; i < vector.length; i++) { //i=1
//i=1
if (vector[i] < vector[i - salto]) {
//8<6 -> f
temp = vector[i - salto]; //6
vector[i - salto] = vector[i]; //4
vector[i] = temp;
bandera = true; //-> indentifica si se hizo cambios en el vector
}
}
}
}
}

public void metodoSeleccion(int vector[]) { //50,26,7,9,15,27


int menor;
int posicion;
int temp;
for (int i = 0; i < vector.length; i++) { //i=4
//valor menor inicial
menor = vector[i]; //50
//posicion del valor menor
posicion = i; //4
for (int j = i + 1; j < vector.length; j++) { //j=6
if (vector[j] < menor) {
//27<50
menor = vector[j]; //menor=27
posicion = j; // 5
}
}

//intercambio de valor
if (posicion!=i) {
//3!=3
temp = vector[i]; //50
vector[i] = menor; //27
vector[posicion] = temp;
}
}
//7,26,50,9,15,27
//7,9,50,26,15,27
//7,9,15,26,50,27
//7,9,15,26,27,50
}

//método para imprimir


public void imprimir(int vector[]) {
System.out.println("");
System.out.println("---ELEMENTOS ORDENADOS---");
for (int i = 0; i < vector.length; i++) {
System.out.println(vector[i]);
}
}
}

CLASE EJECUTABLE
public class ClaseEjecutableAlgoritmos {

public static void main(String[] args) {


int op;

int vector[] = new int[6];


Scanner sc = new Scanner(System.in);
AlgortimosOrdenamiento ordenamiento = new AlgortimosOrdenamiento();

do {
System.out.println("");
System.out.println("ALGORITMOS DE ORDENAMIENTO");
System.out.println("1. Algoritmo Burbuja");
System.out.println("2. Algoritmo Shell");
System.out.println("3. Algoritmo Selección");
System.out.println("4. Salir");
System.out.println("Escoja una opción: ");
op = sc.nextInt();
//almacenar datos en el vector
System.out.println("");
for (int i = 0; i < vector.length; i++) {
System.out.println("Ingrese el dato para el vector: ");
vector[i] = sc.nextInt();
}
switch (op) {
case 1:
//Llamar al método de ordenamiento burbuja
ordenamiento.metodoBurbuja(vector);
ordenamiento.imprimir(vector);
break;
case 2:
ordenamiento.metodoShell(vector);
ordenamiento.imprimir(vector);
break;
case 3:
ordenamiento.metodoSeleccion(vector);
ordenamiento.imprimir(vector);
break;
case 4:
System.out.println("GRACIAS POR UTILIZAR NUESTRO PROGRAMA");
break;
default:
System.out.println("OPCIÓN INVÁLIDA");
}
} while (op != 4);

CONSTRUCTORES
CLASE PADRE
public class Empleado {

//atributos
String nombre;
String codigo;
int horasT;
double valorH;
//double sueldo; //variable de clase

//constructor: inicializa los atributos que van a ser manipulados por el objeto.
//Definir constructor: modificador de acceso - Nombre de la clase()
//constructor vacío
// public Empleado(){
// System.out.println("Constructor vacío");
// }
//construtor no vacío
// public Empleado(){
// nombre="Viviana";
// codigo="OA345";
// horasT=180;
// valorH=10;
// }
//constructor no vacío - argumentos
public Empleado(String nombreEmpleado, String codigoEmpleado, int horasTEmpleado, double
valorHEmpleado) {
nombre = nombreEmpleado;
codigo = codigoEmpleado;
horasT = horasTEmpleado;
valorH = valorHEmpleado;
}

//métodos
//calcular salario
// public void calcularSalario() {
// sueldo=horasT*valorH;
// System.out.println("Sueldo: "+sueldo);
//
// }
public double calcularSalario() {
double sueldo; //variable local
sueldo=horasT*valorH; //1040
return sueldo; //1040
}

public void descuentoSalario(){


//llamar método en la misma clase
double sueldo=calcularSalario(); //metodo return
System.out.println("Sueldo: "+sueldo);
//calcularSalario(); //metodo void
double sueldoDescuento;
if(horasT>=0 && horasT<140){
System.out.println("TIENES UN DESCUENTO DEL 10%");
sueldoDescuento=sueldo-(sueldo*0.10);
}else if(horasT>=140 && horasT<150){
System.out.println("TIENES UN DESCUENTO DEL 5%");
sueldoDescuento=sueldo-(sueldo*0.05);
}else if(horasT>=150 && horasT<160){
System.out.println("TIENES UN DESCUENTO DEL 3%");
sueldoDescuento=sueldo-(sueldo*0.03);
}else{
System.out.println("NO TIENES NINGÚN DESCUENTO");
sueldoDescuento=sueldo;
}
System.out.println("Sueldo Neto: "+sueldoDescuento);
}
//método descuento

//criterio 10%: horas trabajadas menores a 140


//criterio 5%: horas trabajas menores 150
//criterio: 3%: horas trabajas menores 160

public void informacionEmpleado() {


System.out.println("");
System.out.println("-----INFORMACIÓN EMPLEADO-----");
System.out.println("Nombre: " + nombre + "\n"
+ "Código: " + codigo + "\n"
+ "Horas Trabajadas: " + horasT + "\n"
+ "Valor Hora: " + valorH);
}
}

CLASE EJECUTABLE
package com.desarrollo.constructores;
import java.util.Scanner;
public class ClaseEjecutableEmpleado {
public static void main(String[] args) {
String nombreEmpleado, codigoEmpleado;
int horasTEmpleado;
double valorHEmpleado;
Scanner sc = new Scanner(System.in);
//Ingreso datos
System.out.println("");
System.out.println("INFORMACIÓN EMPLEADO");
System.out.println("Nombre: ");
nombreEmpleado = sc.next();
System.out.println("Código: ");
codigoEmpleado = sc.next();
System.out.println("Horas Trabajadas: ");
horasTEmpleado = sc.nextInt();
System.out.println("Valor Hora: ");
valorHEmpleado = sc.nextDouble();
//Instanciar la clase
Empleado emp = new Empleado(nombreEmpleado, codigoEmpleado , horasTEmpleado,
valorHEmpleado);
emp.informacionEmpleado();
//emp.calcularSalario();
emp.descuentoSalario();

}
}
LIST
ARRAYLIST

 ArrayList como su nombre


indica basa la
implementación de la lista en
un array. Eso sí, un array
dinámico en tamaño (es
decir, de tamaño variable),
pudiendo agrandarse el
número de elementos o
disminuirse.
OPERACIONES

 boolean add(object o): Añade un nuevo objet


devolviendo true si lo ha insertado y false si no ha pod
 void add(int posicion, object o): Añade un nuevo ob
en la posición indicada desplazando hacia arriba el re
 object get(int posicion): Devuelve el objeto que
indicada. Cabe mencionar que al devolvernos un
objeto, nosotros debemos hacerle la conversión explic
 object remove(int posicion): Elimina de la colección
indicada. no hay que hacerle conversión de tipo, y
eliminar, no le hace falta saber de que tipo es.
 void clear(): Elimina todos los
elementos almacenados en
la colección.
 int Size(): Devuelve el tamaño
de la colección. Con este
método y el método "get(int
posicion)" podemos recorrer
esta colección con un
simple "for":
LINKEDLIST

 La clase LinkedList implementa la lógica para trabajar


es decir podemos insertar y extraer elementos de c
lista.
 MÉTODOS
 add
 remove
 size
 get
INSTITUTO
TECNOLÓGICO
SUPERIOR QUITO
METROPOLITANO

Pilas – Colas
ING. VIVIANA FLORES
Pilas
• Es una lista ordinal o estructura de datos en la que el modo de acceso a sus
elementos es de tipo LIFO (del inglés Last In First Out, último en entrar,
primero en salir) que permite almacenar y recuperar datos. Se aplica en
multitud de ocasiones en informática debido a su simplicidad y ordenación
implícita en la propia estructura .
Operaciones
de una Pila
• Laclase Stack extiende a la clase Vector para
implementar una estructura de datos de tipo
pila.
push (apilar)

pop (desapilar)

peek (cima)

empty (esta vacia)

size
Colas
• Una cola es una estructura de datos, caracterizada por ser una secuencia de
elementos en la que la operación de inserción push se realiza por un extremo
y la operación de extracción pop por el otro. También se le llama estructura
FIFO (del inglés First In First Out), debido a que el primer elemento en
entrar será también el primero en salir .
Operaciones
Crear: se crea la cola vacía.

Encolar (añadir, entrar, insertar): se añade un elemento a la cola. Se añade al final de


esta.

Desencolar (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir,


el primer elemento que entró.

Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer


elemento que entró.

• Queue es una forma lineal especial, que sólo


permite la eliminación en el extremo frontal de
la mesa, mientras que el extremo
posterior de la operación de inserción de la
mesa.
• Clase LinkedList implementa la interfaz de
cola.
 add
 peek
 size
 clear
 remove
 isEmpty
INSTITUTO TECNOLÓGICO
QUITO SUPERIOR
METROPOLITANO

INTRODUCCIÓN A ESTRUCTURAS DE DATOS


ING. VIVIANA FLORES
ESTRUCTURA DE
DATOS
• Es una colección de datos que se caracterizan
por su organización y las operaciones que se
definen en ella.
• Los datos estructurados, llamados también
estructuras de datos, son una colección o
conjunto de datos simples que tiene el mismo
nombre.
ARRAYS
Los arrays son una estructura que almacena
los datos un elemento al lado del otro.
MEMORIA
ESTÁTICA

MEMORIA ESTÁTICA
• Es una clase de utilidad introducida en el JDK 1.2 que contiene
métodos static para ordenar, llenar, realizar búsquedas y
CLASE ARRAYS comparar los arrays clásicos del lenguaje.

Import.java.util.Arrays
sort

métodos fill

equals
ORDENAMIENTO DE VECTORES
BURBUJA

• La Ordenación de burbuja (Bubble


Sort en inglés) es un
sencillo algoritmo de
ordenamiento. Funciona
revisando cada elemento de la
lista que va a ser ordenada con el
siguiente, intercambiándolos de
posición si están en el orden
equivocado
SHELL
• Cualquier algoritmo de ordenación que
intercambia elementos adyacentes (como los
algoritmos burbuja, selección o inserción) tiene
un tiempo promedio de ejecución de orden
cuadrático (n2). El método Shell mejora este
tiempo comparando cada elemento con el que
está a un cierto número de posiciones llamado
salto, en lugar de compararlo con el el que está
justo a su lado. Este salto es constante, y su valor
inicial es N/2 (siendo N el número de elementos, y
siendo división entera).
SELECCIÓN

• Consiste en encontrar el menor de


todos los elementos del arreglo o
vector e intercambiarlo con el que
está en la primera posición. Luego el
segundo mas pequeño, y así
sucesivamente hasta ordenarlo todo.
INSTITUTO TECNOLÓGICO
SUPERIOR QUITO
METROPOLITANO

CLASES Y OBJETOS
ING. VIVIANA FLORES
INTRODUCCIÓN A LAS CLASES Y OBJETOS EN JAVA

UNA CLASE ES UNA PLANTILLA POSEE ATRIBUTOS Y MÉTODOS

UN OBJETO ES UNA INSTANCIA


POSEE UN NOMBRE
DE UNA CLASE
INTRODUCCIÓN A LAS CLASES Y OBJETOS EN JAVA

UNA CLASE ES UNA PLANTILLA POSEE ATRIBUTOS Y MÉTODOS

UN OBJETO ES UNA INSTANCIA


POSEE UN NOMBRE
DE UNA CLASE
TIPOS EN JAVA
• Nombre de la clase debe terminar con extensión.java.
• Sintaxis
• class NombreDeLaClase {
tipoDato variable1;
FORMA GENERAL DE tipoDato variable2;

UNA CLASE EN JAVA tipoDato nombreDelMetodo1 (argumento){


}
tipoDato nombreDelMetodo2 (argumento) {
}
• En este caso el nuevo tipo de dato
se llama persona.. Usaremos este
nombre para crear objetos de tipo
persona.
OBJETOS

• Es la instancia de una clase.


CREACIÓN DE UN OBJETO EN JAVA
• Sintaxis
METODOS EN JAVA
LLAMAR A UN MÉTO
CONSTRUCTOR

Creación Objeto tipo Aritmética Creación Objeto tipo Aritmética

• Sin inicializar valores (uso del constructor vacío) • Inicializar valores (uso del constructor NO

Aritmetica arit=new Aritmetica(); Aritmetica arit=new Aritmetica(3,4);


a=0, a=3;
b=0; b=4;

52
EJEMPLO DE CONSTRUCTOR

53
54
INSTITUTO
TECNOLÓGICO
SUPERIOR QUITO
METROPOLITANO

INTERFAZ LIST
ING. VIVIANA FLORES
COLLECTION
LIST
ARRAYLIST

 ArrayList como su nombre


indica basa la
implementación de la lista en
un array. Eso sí, un array
dinámico en tamaño (es
decir, de tamaño variable),
pudiendo agrandarse el
número de elementos o
disminuirse.
OPERACIONES

 boolean add(object o): Añade un nuevo objeto a la colección,


devolviendo true si lo ha insertado y false si no ha podido.
 void add(int posicion, object o): Añade un nuevo objeto a la colección
en la posición indicada desplazando hacia arriba el resto de la colección.
 object get(int posicion): Devuelve el objeto que ocupa la posición
indicada. Cabe mencionar que al devolvernos un elemento de tipo
objeto, nosotros debemos hacerle la conversión explicita.
 object remove(int posicion): Elimina de la colección el objeto la posición
indicada. no hay que hacerle conversión de tipo, ya que, como lo a a
eliminar, no le hace falta saber de que tipo es.
 void clear(): Elimina todos los
elementos almacenados en
la colección.
 int Size(): Devuelve el tamaño
de la colección. Con este
método y el método "get(int
posicion)" podemos recorrer
esta colección con un
simple "for":
TIPOS DE
DATOS
LINKEDLIST

 La clase LinkedList implementa la lógica para trabajar con listas genéricas,


es decir podemos insertar y extraer elementos de cualquier parte de la
lista.
 MÉTODOS
 add
 remove
 size
 get
INSTITUTO TECNOLÓGICO SUPERIOR
QUITO METROPOLITANO
COLECCIÓN MAP
INTERFACE MAP
HASHMAP

 Un HashMap básicamente designa claves únicas para


los valores correspondientes que se pueden recuperar en
cualquier punto dado.

 No ofrece absolutamente ninguna garantía sobre el orden


de iteración. Puede (e incluso) cambiará completamente
cuando se agreguen nuevos elementos.
 Los valoresse pueden almacenar en un mapa formando
un par clave-valor. El valor se puede recuperar usando la
clave pasándola al método correcto.
 Si no existe ningún elemento en el Mapa, arrojará una
‘ NoSuchElementException’ .
 HashMap almacena solo referencias de objetos . Por eso,
es imposible utilizar tipos de datos primitivos como double
o int. Utilice la clase contenedora (como Integer o Double)
en su lugar.
INSTITUTO
TECNOLÓGICO
SUPERIOR QUITO
METROPOLITANO
JFRAME
ING. VIVIANA FLORES
INTERFAZ GRÁFICA DE USARIO - GUI

 Las interfaces gráficas de usuario (GUI) ofrecen al usuario ventanas,


cuadros de diálogo, barras de herramientas, botones, listas desplegables
y muchos otros elementos con los que ya estamos muy acostumbrados a
tratar.
 La API de Java proporciona una biblioteca de clases para el desarrollo de
Interfaces gráficas de usuario.
 La API está constituida por clases, interfaces y derivaciones. AWT y Swing
CONSTRUIR GUI

https://docs.oracle.com/javase/7/docs/api/javax/s
wing/JFrame.html
COMPONENTES
COMPONENTES
INSTITUTO TECNOLÓGICO SUPERIOR
QUITO METROPOLITANO
Excepciones en java
EXCEPCIONES
TIPOS DE
EXCEPCIONES EN
EL API DE JAVA
SINTAXIS DEL
MANEJO DE
EXCEPCIONES
CREACION DE
NUESTRAS
PROPIAS
CLASES DE
EXCEPCIÓN
LA
CLÁUSULA
THROWS
Java y MySQL
 JDBC: Java DataBase Connectivity

Cliente Servidor

Aplicación Java
MySQL
Conexión cliente-servidor
Driver JDBC MySQL

El driver implementa
las interfaces del
Java Runtime paquete JDBC estándar.
Base de Datos
Librerías JDBC

JVM

•0
Ciclo de ejecución
Establecer conexión a
Cargar Driver JDBC
la base de datos

Ejecutar sentencia

Consulta
Actualización
Armar SQL
Armar SQL
Crear sentencia
Crear sentencia
Ejecutar
Ejecutar
Iterar sobre el resultado

Cerrar conexión
Otra sentencia
•1
Clase DriverManager (Paquete java.sql)

DriverManager: clase estática (no requiere instanciación de objetos) que administra los
drivers jdbc disponibles para iniciar conexiones.

 Connection getConnection(String url): intenta iniciar una conexión a una base de


datos según los parámetros especificados en el url. Generalmente el string de conexión
tiene el siguiente formato:
jdbc:<driver>:<propiedades de la conexión>
Para MySQL:
jdbc:mysql://<servidor>:<puerto>/<base_datos>?<parametros>
Por ejemplo: jdbc:mysql://localhost:3306/batallas?&user=barco&password=pwbarco

 Connection getConnection(String url, String usuario, String clave): idem al anterior


pero por compatibilidad y seguridad, el usuario y la clave de acceso, son parámetros
individuales.

 setLoginTimeout(int segundos): configura la cantidad de segundos de espera para


intentar establecer la próxima conexión a una base de datos.

•2
Clase Connection (Paquete java.sql)

 Connection: interfaz para implementar una sesión cliente-servidor con una base de datos.

 Statement createStatement(): crea una nueva sentencia para ejecutar código SQL en
forma directa en el servidor a traves de la conexión.

 PreparedStatement prepareStatement(String sql): crea una sentencia preparada


con una estructura predeterminada dada por parámetros, para luego enviar los datos
efectivos.

 boolean isValid(int timeout): verifica que la conexión está abierta y disponible para
ejecutar una operación. Es necesaria para determinar si la conexión de red aun
permanece activa desde la ejecución del último SQL.

 close(): cierra la conexión y libera los recursos utilizados.

 setAutoCommit(boolean autoCommit), commit(), rollback(): utilizados para el


manejo de transacciones en la conexión actual.

•3
Conexión JDBC a MySQL
// Intento de conexión a una base de datos
String servidor = "localhost:3306";
String baseDatos = "batallas";
String usuario = "admin_batallas";
String clave = "pwbatallas";
String url = "jdbc:mysql://" + servidor + "/" +baseDatos+
"?serverTimezone=America/Argentina/Buenos_Aires";

java.sql.Connection cnx;
try
{
cnx = java.sql.DriverManager.getConnection(url, usuario, clave);
}
catch (java.sql.SQLException ex)
{
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}

•4
Clase Statement (Paquete java.sql)

Statement: se utiliza para ejecutar una sentencia SQL en base a un string estático, ya sea
un comando o una consulta.

 boolean execute(String sql): ejecuta cualquier tipo de SQL. Si es una consulta se debe
recuperar el resultado mediante el método ResultSet getResultSet();

 int executeUpdate(String sql): sólo para comandos de actualización de datos (insert,


delete, update) o configuración dinámica de la sesión (transacciones, concurrencia, etc).

 ResultSet executeQuery(String sql): sólo para consultas que retornan un resultado en


filas o registros.

 addBatch(String sql), int[] executeBatch(), clearBatch(): permiten ejecutar una


secuencia de comandos enviados en un lote.

 void setQueryTimeout(int seconds): impone un límite de espera por el resultado de la


ejecución de la sentencia.

 close(): cierra la sentencia liberando los recursos utilizados.

•5
Clase ResultSet (Paquete java.sql)
ResultSet: contiene el conjunto resultado de una consulta SQL, estructurado en filas y
columnas, con el comportamiento de un iterador.

 boolean next(): avanza el índice interno del iterador a la proxima fila. Retorna false si no hay
mas filas.

 String getString(int columnIndex), String getString(String columnLabel): permiten


recuperar los valores de las columnas como un String, según su posición en la fila (la
primer columna es 1) o mediante su nombre respectivamente.

 int getInt(...), long getLong(...), float getFloat(...), double getDouble(...),


boolean getBoolean(...), Date getDate(...), Timestamp getTimestamp(...),
Object getObject(...), etc...: una función para cada tipo de dato (java) de las columnas.

 boolean wasNull(): verifica si el último valor recuperado de una columna correpondía al


valor NULL de SQL.

 boolean previous(), boolean first(), boolean last(), boolean absolute(int row), boolean
relative(int rows): funciones para navegar en el conjunto resultado.

 ResultSetMetaData getMetaData(): para recuperar los meta-datos (cantidad de columnas,


tipos, …) del conjunto resultado y de las columnas.

•6
Consultas SQL
try
{
// Se crea una sentencia jdbc para realizar la consulta
java.sql.Statement stmt = cnx.createStatement();

// Se prepara el string SQL de la consulta


String sql = "SELECT nombre_barco, id, capitan FROM barcos”;

// Se ejecuta la sentencia y se recibe un resultado


java.sql.ResultSet rs = stmt.executeQuery(sql);

// Se recorre el resultado
while (rs.next())
{
String nombreBarco = rs.getString("nombre_barco");
int id = rs.getInt("id");
String capitan = rs.getString("capitan");
}
rs.close();
stmt.close();
}
catch (java.sql.SQLException ex) {} •7
Clase ResultSetMetaData (Paquete java.sql)

ResultSetMetaData: permite obtener los tipos y propiedades de las columnas de un


conjunto resultado (ResultSet):

 int getColumnCount(): cantidad de columnas en el resultado.

 String getColumnLabel(int column), String getColumnName(int column): recuperar


el nombre modificado o el nombre real de una columna respectivamente.

 String getColumnClassName(int column): recuperar la clase de Java determinada


como predefinida para el tipo de dato de una columna.

 int getColumnType(int column), String getColumnTypeName(int column): recuperar


el tipo de dato SQL estándar y SQL específico de una columna respectivamente.

 int isNullable(int column), boolean isAutoIncrement(int column): propiedades


particulares de una columna.

 boolean isSearchable(int column): determina si es posible ejecutar un filtro en el


WHERE de una consulta sobre la columna indicada.

•8
Actualización de datos
Comandos o sentencias de manipulación de datos (insert,
update, delete) que no retornan un resultado.
try
{
// Se crea una sentencia jdbc para realizar la consulta
java.sql.Statement stmt = cnx.createStatement();
// Se prepara el string SQL de la inserción
String sql = "INSERT INTO barcos (nombre_barco, id, capitan) " +
"VALUES ('Bismark', 22, 'Ernst Lindeman')";
// Se ejecuta la inserción
stmt.execute(sql);
// Se retornan los recursos utilizados cerrando la sentencia
stmt.close();
}
catch (java.sql.SQLException ex)
{
System.out.println("Mensaje: " + ex.getMessage()); // Mensaje
retornado por MySQL
System.out.println("Código: " + ex.getErrorCode()); // Código de
error de MySQL System.out.println("SQLState: " +
ex.getSQLState()); // Código de error del SQL standart •9
}
Sentencias Preparadas
 Se utilizan cuando una misma sentencia (consulta o actualización) debe
ejecutarse repetidamente con la misma estructura pero distintos valores.
 Más comunmente usado en inserciones de registros en masa.

 Acelera la ejecución al evitar la interpretación del SQL de manera individual. Una

vez preparada la sentencia en el servidor, sólo se envian los datos efectivos.


 El método puede interpretarse como una pre-compilación de las sentencias para

un posterior uso repetitivo. No sólo se ahorran ciclos de cpu en el servidor, sino


también ancho de banda para la trasmisión de comandos y datos.
String sql = "INSERT INTO barcos (nombre_barco, id, capitan)
VALUES (?, ?, ?)";
// Se crea un sentencia preparada
java.sql.PreparedStatement stmt = cnx.prepareStatement(sql);
// Se ligan los parámetros efectivos
stmt.setString(1, "Bismark");
stmt.setInt(2, 22);
stmt.setString(3, "Ernst Lindeman");
// Se ejecuta la inserción
stmt.executeUpdate();
// se cierra la sentencia
stmt.close(); •10
Clase JTable (paquete javax.swing.table)

Permite mostrar graficamente tablas con datos, permitiendo opcionalmente al usuario


editar los datos.

 Cada tabla JTable usa un objeto TableModel para manejar y almacenar los datos.

Si no se especifica ningun modelo de tabla, JTable utiliza por defecto el modelo
DefaultTableModel que almacena los datos como vector de vectores.

Para crear un modelo de tabla se debe implementar la interface TableModel. Generalmente se


implementa extendiendo la clase DefaultTableModel o AbstractTableModel.

 Clase DBTable (paquete quick.dbtable) Esta construido sobre JTable ( comparte muchos
métodos y propiedades) y provee funciones específicas para bases de datos.
•11
(Ver ejemplos de su uso en proyecto Batallas)
Manejo de Fechas
Para convertir String a java.util.Date:

Date fecha = (new SimpleDateFormat("dd/MM/yyyy")).parse("31/12/2009");

Para convertir java.util.Date a String:

String fechaStr = (new SimpleDateFormat("dd/MM/yyyy")).format(fecha);

Para convertir java.util.Date a String para SQL:

String fechaStrSQL = (new SimpleDateFormat("yyyy-MM-dd")).format(fecha);

Para convertir java.util.Date a java.sql.Date de JDBC:

java.sql.Date retorno = java.sql.Date.valueOf(


(new SimpleDateFormat("yyyy-MM-dd")).format(fecha));

(Mas funciones ver fechas.java en proyecto Batallas)

•12
Importar el proyecto ”Batallas” en Eclipse

•13
Instalación del Driver JDBC
de MySQL en Eclipse

•14
Selección de la librería externa

•15
Selección de la librería externa:
JDBC MySQL connector

•16
Selección de la librería externa:
quicktable (DBTable)

•17
Generar el archivo JAR de
un proyecto en Eclipse

•18
Generar el archivo JAR de
un proyecto en Eclipse (cont.)

•19
Generar el archivo JAR de
un proyecto en Eclipse (cont.)

•20
Referencias
Driver JDBC de MySQL: http://dev.mysql.com/downloads/connector/j/

Swing / JTable:
 http://java.sun.com/docs/books/tutorial/uiswing

 http://download.oracle.com/javase/tutorial/uiswing/components/table.html

Quick.DBTable: (no tiene mas soporte)


 http://quicktablejava.appspot.com/home.html

Eclipse: http://www.eclipse.org/downloads
Window builder: http://www.eclipse.org/windowbuilder/download.php
JDK 8 SE: http://java.sun.com/javase/downloads/index.jsp
Java API:
 http://java.sun.com/javase/7/docs

 http://java.sun.com/javase/7/docs/technotes/guides/jdbc

•21

También podría gustarte