Guía práctica de introducción básica a JDBC

Anuncio
Guía práctica de introducción básica a JDBC
Programación Orientada a Objetos
Universidad Autónoma de Manizales
Instalar SQLite
Descargar el paquete que corresponda con la versión binaria (Precompiled Binaries) de la plataforma
deseada: Linux, MacOSX o Windows desde la siguiente ubicación.
http://sqlite.org/download.html
Descomprimir el paquete recién descargado en una ubicación conocida. Ubicar la aplicación
sqlite3.exe (sqlite3 en Linux/MacOSX) en una ruta bajo el PATH (o actualice esta variable).
Crear la base de datos
Abrir una consola del sistema operativo y ubíquese en el directorio del proyecto. Por ejemplo:
$ mkdir ~/poo/proyecto
$ cd ~/poo/proyecto
Crear un archivo de texto con las sentencias SQL para crear la base de datos.
$ vi schema_sqlite.sql
CREATE TABLE producto (
codigo
nombre
precio
vencimiento
INTEGER PRIMARY KEY
VARCHAR(50)
FLOAT
DATE
NOT NULL,
NOT NULL,
NOT NULL,
);
INSERT INTO producto (nombre, precio, vencimiento) VALUES
('Papitas', 500, '2012-05-18');
INSERT INTO producto (nombre, precio, vencimiento) VALUES
('Gaseosa', 1200, '2012-08-20');
INSERT INTO producto (nombre, precio, vencimiento) VALUES
('Jugo de naranja', 2000, '2012-12-24');
Ejecutar las sentencias SQL de schema_sqlite.sql para crear la nueva base de datos.
$ sqlite3 basededatos.db < schema_sqlite.sql
Descargar el driver JDBC para SQLite
Descargar la versión mas reciente del driver JDBC para SQLite de la siguiente ubicación.
http://www.xerial.org/maven/repository/artifact/org/xerial/sqlite-jdbc/
Crear un proyecto en Netbeans
Crear un nuevo proyecto de tipo Java Application.
Incluir la referencia del driver JDBC
Hacer clic derecho sobre el proyecto en Netbeans y elegir la opción Properties.
Seleccionar la opción Libraries en la columna izquierda de las categorías. Presione el botón Add
JAR/Folder en el lado izquierdo.
Seleccione el archivo .jar del driver descargado en el paso anterior.
Este archivo deberá mantenerse en esa ubicación ya que es referenciado de manera externa por el
proyecto de Netbeans.
Importar las librerías de acceso a bases de datos
import java.sql.*;
import java.util.Date;
Cargar la clase del driver JDBC
try
{
Class.forName("org.sqlite.JDBC");
}
catch (ClassNotFoundException ex)
{
System.err.println("ERROR: no fue posible cargar el driver
JDBC");
System.exit(1);
}
Establecer la conexión con la base de datos
Por efectos de la demostración toda la interacción se va a realizar en un unico punto en el main, en una
aplicación real esto no sucede así. Por este motivo se deberá crear una estructura de try/catch para
las siguientes secciones.
Connection connection = null;
try
{
// Sección #1
}
catch(SQLException e)
{
System.err.println("ERROR ejecutando las consultas SQL: " +
e.getMessage());
}
finally
{
// Sección #2
}
El código dispuesto en las secciones a continuación se deberá agregar en la sección #1 hasta que se
notifique algo diferente.
Para establecer la conexión con la base de datos SQLite se utilizan la siguientes líneas de código.
connection =
DriverManager.getConnection("jdbc:sqlite:ruta/basededatos.db");
Statement statement = connection.createStatement();
statement.setQueryTimeout(30);
// segundos
En esta sección se realizan las siguientes tareas.
1. Obtener el objeto Connection que permite interactuar con la base de datos.
2. Obtener el objeto Statement de la Connection para construír y ejecutar las sentencias.
3. Asignar un tiempo máximo de espera (timeout) para la ejecución de las consultas (opcional).
Agregar registros a una tabla
String sql = "INSERT INTO producto (nombre, precio, vencimiento) "
+ "VALUES ('Galletas', 800, '2012-04-12');";
int control = statement.executeUpdate(sql);
System.out.println("Ejecutando INSERT: respuesta = " + control);
La ejecución de sentencias INSERT, al igual que UPDATE y DELETE, se realiza con el método
executeUpdate del Statement. Este método retorna un valor entero que representa el número
de registros afectados por la sentencia DML.
Remover registros de una tabla
sql = "DELETE FROM producto WHERE codigo = 1";
control = statement.executeUpdate(sql);
System.out.println("Ejecutando DELETE: respuesta = " + control);
Actualizar registros de una tabla
sql = "UPDATE producto SET precio = 999 WHERE codigo = 4";
control = statement.executeUpdate(sql);
System.out.println("Ejecutando UPDATE: respuesta = " + control);
Obtener información de una tabla
Para obtener información de una tabla se utiliza la sentencia SELECT de SQL. Para transmitirla al
motor de bases de datos se utiliza el método executeQuery de la clase Statement el cual retorna
un conjunto de resultados (ResultSet) el cual puede ser navegado para recuperar los registros del
resultado.
ResultSet rs = statement.executeQuery("SELECT * FROM producto ORDER
BY nombre");
while(rs.next())
{
int codigo
String nombre
float precio
Date vencimiento
=
=
=
=
rs.getInt("codigo");
rs.getString("nombre");
rs.getFloat("precio");
rs.getDate("vencimiento");
System.out.println("Codigo: " + codigo);
System.out.println("Nombre: " + nombre);
System.out.println("Precio: " + precio);
System.out.println("Fecha : " + vencimiento);
}
Terminar la conexión a la base de datos
Una vez terminadas las operaciones contra la base de datos es necesario cerrar su conexión. El
siguiente código se debe agregar en la sección #2.
try
{
if(connection != null)
connection.close();
}
catch(SQLException e)
{
System.err.println("ERROR cerrando la conexión: "
+ e.getMessage());
}
Ejercicio
Implementar la aplicación descrita en esta guía, ejecutarla varias veces y analizar los resultados
obtenidos.
Descargar