En este curso vamos a ver unas opciones avanzadas del lenguaje Java. Esta base les va a servir por cualquier tipo de aplicación que desea realizar: aplicación independiente, applet, pagina web en Java…

Manual del alumno

Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual contiene un resumen de las materias que se van a estudiar durante el curso, pero el alumno debería de tomar notas personales para completas este manual.

Ejercicios prácticos

Para captar mejor la teoría, se harán muchos ejercicios con los alumnos, para probar la teoría y verificar la integración de la materia.

También, el alumno podrá copiar sus códigos en un disquete al fin del curso para llevarse, con fin de seguir la práctica en su hogar.

Requisitos para atender a este curso

  • Se requiere un conocimiento de base del lenguaje Java, y la programación orientado a objeto. también se necesita un conocimiento de base del lenguaje SQL.
  • Si el alumno tiene dificultades en un u otro capítulo, él debe sentirse libre de pedir explicaciones adicionales al profesor.

Conexión a base de datos

Cuando se desarrolla una aplicación, muchas veces se necesita conectar a una base de datos. Java permite conectarse a las mayorías de las base de datos, por tanto que existe un driver ODBC o mejor, JDBC.

Objetivo del capitulo

Al fin de este capitulo, el alumno será capaz de crear una conexión a una base de datos y ejecutar instrucciones en la base de datos. Este capitulo no es una iniciación al SQL ni al manejo de base de datos.

Driver ODBC

Un driver ODBC (Open Database Connectivity) permite utilizar un driver “genérico” para conectarse a une base de datos. Así Java se conecta al driver ODBC, y el driver ODBC se conecta a la base de datos. Es el medio más fácil de conectarse a una base de datos, pero es mucho menos eficiente que un driver JDBC.

Driver JDBC

Un driver ODBC (Java Database Connector) es un driver diseñado para conectarse a una base de datos. Este driver es específico a una base de datos (y a veces a una cierta versión de una base de datos).

El driver JDBC se conecta directamente a la base de datos, y como él esta diseñado para esta base de datos, tiene normalmente muchas más opciones, y menos restricciones, que el ODBC.

Conexión

Básicamente, hay primero que cargar el driver JDBC, luego hay que conectarse a la base de datos, y si logras eso, puedes ejecutar tus consultas SQL.

Ejemplo:

import java.sql.DriverManager;
import java.sql.SQLException;
public class TestDb {
public static void main(String[] args) {
java.sql.Connection con = null;
try {
try {
System.out.println("Buscando el driver JDBC...");
Class.forName(
"com.mysql.jdbc.Driver"
// "org.postgresql.Driver"
// "oracle.jdbc.driver.OracleDriver"
// "com.microsoft.sqlserver.jdbc.SQLServerDriver"
// "org.firebirdsql.jdbc.FBDriver"
).newInstance();
System.out.println("...Encontró el driver JDBC");
} catch (Exception e) {
System.out.println("No pudo encontrar el driver JDBC !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out.println("Connectando a la base de datos...");
con = DriverManager
.getConnection("jdbc:mysql://localhost/curso?user=curso&password=123"
// "jdbc:postgresql://localhost/curso:5432","postgres","123"
// "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123"
// "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123"
);
System.out.println("...Connectado a la base de datos");
} catch (Exception e) {
System.out
.println("No pudo conectarse a la base de datos !!!!");
e.printStackTrace(System.out);
return;
}
} finally {
System.out.println("Cerrando la conexion a la base de datos.");
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Fin");
}
}
}

Ejecución de instrucciones SQL

Para poder ejecutar instrucciones SQL en la base de datos, hay que ser conectado a la a base de datos.

Una vez conectado, hay que crear la instrucción, ejecutarla, y eventualmente recoger el resultado.

Dependiendo de si la instrucción debería de regresar datos, o no, se va utilizar una lista de resultados (ResultSet) o solamente ejecutar la instrucción.

De Java se pueden también llamar a procedimientos y funciones de la base de datos.

Para evitar problemas con juegos de carácter o caracteres especiales, es mejor utilizar CallableStatement y PreparedStatement.

Ejemplo:

import java.sql.*;
public class TestSql {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null;
Statement s = null;
ResultSet rs = null;
try {
try {
System.out.println("Buscando el driver JDBC...");
Class.forName("com.mysql.jdbc.Driver"
// "org.postgresql.Driver"
// "oracle.jdbc.driver.OracleDriver"
// "com.microsoft.sqlserver.jdbc.SQLServerDriver"
// "org.firebirdsql.jdbc.FBDriver"
).newInstance();
System.out.println("...Encontró el driver JDBC");
} catch (Exception e) {
System.out.println("No pudo encontrar el driver JDBC !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out.println("Connectando a la base de datos...");
con = DriverManager
.getConnection("jdbc:mysql://localhost/curso?user=curso&password=123"
// "jdbc:postgresql://localhost/curso:5432","postgres","123"
// "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123"
// "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123"
);
System.out.println("...Connectado a la base de datos");
} catch (Exception e) {
System.out
.println("No pudo conectarse a la base de datos !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out
.println("Lista de empleados con salario inferior a $30,000");
s = con.createStatement();
rs = s
.executeQuery("select concat(first_name,' ',last_name) as full_name from
employee where salary < 30000");
// "select first_name||' '||last_name as full_name from employee where salary < 30000");
while (rs.next()) {
System.out.println(rs.getString("full_name"));
}
} catch (java.sql.SQLException e) {
System.out.println("Unable to step thru results of query");
showSQLException(e);
return;
}
try {
System.out
.println("===============================================");
System.out
.println("Lista de empleados con salario entre $30,000 y $40,000");
ps = con
.prepareStatement("select concat(first_name,' ',last_name) as full_name from
employee where salary between ? and ?");
// "select first_name||' '||last_name as full_name from employee where salary between ?
and ?");
ps.setInt(1, 30000);
ps.setInt(2, 40000);
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("full_name"));
}
} catch (java.sql.SQLException e) {
System.out.println("Unable to submit a static SQL query.");
showSQLException(e);
return;
}
} finally {
System.out.println("Cerrando la conexion a la base de datos.");
try {
if (rs != null) {
rs.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
try {
if (ps != null) {
ps.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
try {
if (con != null) {
con.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
System.out.println("Fin");
}
}
private static void showSQLException(java.sql.SQLException e) {
java.sql.SQLException next = e;
while (next != null) {
System.out.println(next.getMessage());
System.out.println("Error Code: " + next.getErrorCode());
System.out.println("SQL State: " + next.getSQLState());
next = next.getNextException();
}
}
}
Enlace de Descarga
Fuente: Cedric Simon, SolucionJava.com