Generación automática de código JDBC

1
54327

JDBC desde el primer día

Cuando nos planteamos realizar un programa (en cualquier lenguaje) llegamos a
un momento donde se hace necesario utilizar una base de datos.

Para acceder a una base de datos desde Java, aunque es sencillo, se requieren
unos conocimientos intermedios.

Os vamos a mostrar como generar el código de acceso a la base de datos sin
saber realmente programar esos acceso.

 

Para ello vamos a usar JDBCTest( de Intersolv).

Primero lo descargamos de java.sun.com

 

Debemos estar seguros de tener la variable de entorno classpath de java,
apluntando a los directorios de clases

Ejecutamos

java JDBCTest

Vemos una primera pantalla y lo primero que vamos a hacer es registrar 
el Driver

Vamos a registrar el Driver de OBDC

 

Vamos a ir creando un programa donde ir introduciendo el código que
generamos

class basedatos
{
public static void main (String array[])
{
basedatos instancia = new basedatos();
instancia.ejecuta();
}

void depura(String mensaje)
{
System.out.println(mensaje); 
}

void ejecuta()
{
depura(«Programa simple»);

}

Dentro de la función ejecuta, meteremos el código que nos interesa

 

Vemos que JDBCTest va generando el código equivalente a la
acción así que solo tenemos que ir haciendo lo que queremos obtener y el
código se genera solo.

Obviammente este código no es optimo para una aplicación
profesional pero, ordenándolo un poquito en clases, tendremos ejemplos de todo
lo que necesitamos hacer.

 

Vamos a crear una base de datos desde cero. En este caso, con
access 

La llamamos 

 

Creamos una tabla del modo más simple

Diseño de la tabla

Le asignamos un nombre

Vemos como queda nuestra tabla y pinchamos para introducir datos

 

Registramos la base de datos en el registro ODBC (panel de
control o menú de administración de Windows)

Pinchamos en add (añadir)

Seleccionamos sus ficheros

Y ya tenemos la fuente de datos

Volvemos a JDBCTest

// REGISTER DRIVER

try {

Driver d = (Driver)Class.forName(«sun.jdbc.odbc.JdbcOdbcDriver»).newInstance();

} catch (Exception e) {

System.out.println(e)

}

// GET CONNECTION

Connection con;

try{

con = DriverManager.getConnection(«jdbc:odbc:jdbctest»,userName,password);

}catch(Exception e){

System.out.println(e);

}

// GET CONNECTION WARNINGS

SQLWarning warning = null;

try {

warning = con.getWarnings();

if (warning == null){

System.out.println(«No Warnings»);

return;

}

while (warning != null) {

System.out.println(«Warning: «+warning);

warning = warning.getNextWarning();

}

} catch (Exception e){

System.out.println(e);

}

 

 

Vemos que ha conectado

Creamos la petición (ya vemos abajo el código generado)

Ejecutamos unas consulta

Nos aparece la ventana y proponemos una consulta. Listar todos
los campos de la tabla contactos.

Y ahora decimos que muestre todos los campos

Y vemos que se ha generado todo el código y nos muestra el
resultado

Ahora copiando y pegando el código que nos ha generado
obtenemos esto

Vemos en código completo y algunos pequeños cambios necesario
(en rojo) para que funcione. En azul esta el código que hemos añadido, todo lo
demás, se nos ha generado solo.

import java.sql.*; // SQL library!

class basedatos
{
public static void main (String array[])
{
basedatos instancia = new basedatos();
instancia.ejecuta();
}

void depura(String mensaje)
{
System.out.println(mensaje); 
}

void ejecuta()
{
depura(«Empezamos»);

// REGISTER DRIVER
try 
{
Driver d = (Driver)Class.forName(«sun.jdbc.odbc.JdbcOdbcDriver»).newInstance();

catch (Exception e) 
{
System.out.println(e);
}

// GET CONNECTION
Connection con = null;
try
{
depura(«Recuperamos conexión»);
con = DriverManager.getConnection(«jdbc:odbc:jdbctest»,»»,»»);
}
catch(Exception e)
{
System.out.println(e);
}

// GET CONNECTION WARNINGS
SQLWarning warning = null;
try 
{
warning = con.getWarnings();

if (warning == null)
{
System.out.println(«No Warnings»);
// return;
}

while (warning != null) 
{
System.out.println(«Warning: «+warning);
warning = warning.getNextWarning();
}

catch (Exception e)
{
System.out.println(e);

// CREATE STATEMENT 
Statement stmt = null;
try 
{
stmt = con.createStatement();

catch (Exception e)
{
System.out.println(e);
}

// EXECUTE QUERY 
ResultSet results = null;
try 
{
results = stmt.executeQuery(«select * from contactos»);

catch (Exception e)
{
System.out.println(e);
}

// GET ALL RESULTS 
StringBuffer buf = new StringBuffer();

try 
{
ResultSetMetaData rsmd = results.getMetaData();
int numCols = rsmd.getColumnCount();
int i, rowcount = 0;

// get column header info
for (i=1; i <= numCols; i++)
{
if (i> 1) buf.append(«,»);
buf.append(rsmd.getColumnLabel(i));
}
buf.append(«\n»);

// break it off at 100 rows max
while (results.next() && rowcount < 100)
{
// Loop through each column, getting the column
// data and displaying

for (i=1; i <= numCols; i++) 
{
if (i> 1) buf.append(«,»);
buf.append(results.getString(i));
}
buf.append(«\n»);
rowcount++;
}

System.out.println(buf);

results.close();

catch (Exception e) 
{
System.out.println(e);
return;


depura(«Finalizamos»); 
}
}

Supongo que no hay que ir a «Salamanca» para, con
conocimientos mínimos de Java, adaptar este programa a nuestras necesidades.

 

Sobre el Autor ..

Las marcas mostradas en esta página son marcas registradas y
propiedad de sus respectivos
dueños

1 Comentario

  1. \\\»Debemos estar seguros de tener la variable de entorno classpath de java, apluntando a los directorios de clases\\\» COMO ME ASEGURO……….A DONDE TENGO QUE INGRESAR……DIME APARTE COMO PODRIA HACERLO EN SQL SERVER 2005…YO ESTOY HACIENDO LO MISMO PERO DANDOLE CLIC A SQL PERO NO ME SALE COMO VERIFICO LO PRIMERO POR FAVOR ES URGENTE

Dejar respuesta

Please enter your comment!
Please enter your name here