The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

Archivos por Etiqueta: Apache Derby

Código Java – Conexión a Base de Datos Apache Derby (Embebida y Cliente – Servidor)


Este es el Ejemplo #12.3 del Topic: Programación Gráfica en Java, que viene a formar parte del Topic #12 Código Java – Establecer Conexión a Base de Datos con JDBC

Como he explicado en el Topic #12, para realizar las conexiones necesitaremos los drivers respectivos, de acuerdo al motor de base de datos al cual deseemos conectarnos. En este ejemplo estableceremos una conexión con Apache Derby en sus modalidades Embebida y Cliente-Servidor, para el cual es necesario contar con las respectivas librería que pueden ser similares a las que se muestran a continuación:

derby.jar (Embebida)
derbyclient.jar (Cliente - Servidor)

Estas dos librerías corresponden para una base de datos Apache Derby Embebida y Cliente Servidor respectivamente. Si Derby ha sido instalada de la modalidad mostrada en el post Instalación y Ejecución de Apache Derby en Linux, las librerías podrán ubicarse en las siguientes rutas:

/usr/lib/jvm/java-6-sun/db/lib/derby.jar
/usr/lib/jvm/java-6-sun/db/lib/derbyclient.jar

En caso contrario, las librerías deberán ser obtenidas de medios externos.

Ustedes deberán conseguir la librería de acuerdo a la versión de Derby al cual deseen conectarse y establecer los parámetros de conexión como se muestra en el código siguiente:

Conexión a Base de Datos Derby Cliente – Sevidor:

package beastieux.gui;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
/**
 *
 * @author beastieux
 */
public class Ejm12_3_ConectarDerby {

    public CachedRowSet Function(String sql)
    {
            try
            {
                    Class.forName("org.apache.derby.jdbc.ClientDriver");

                    String url = "jdbc:derby://localhost:1527/dbtest";

                    Connection con = DriverManager.getConnection(url);
                    Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                      ResultSet.CONCUR_READ_ONLY);

                    ResultSet rs= s.executeQuery(sql);

                    CachedRowSet crs = new CachedRowSetImpl();
                    crs.populate(rs);

                    rs.close();
                    s.close();
                    con.close();

                    return crs;

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

            return null;
    }

    public void StoreProcedure(String sql)
    {

            try
            {
                    Class.forName("org.apache.derby.jdbc.ClientDriver");

                    String url = "jdbc:derby://localhost:1527/dbtest";
                    Connection con = DriverManager.getConnection(url);
                    Statement s = con.createStatement();

                    s.execute(sql);

                    s.close();
                    con.close();

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

Conexión a Base de Datos Derby Embebida:

package beastieux.gui;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
/**
 *
 * @author beastieux
 */
public class Ejm12_3_ConectarDerby {

    public CachedRowSet Function(String sql)
    {
            try
            {
                    Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

                    String url = "jdbc:derby:/home/beastieux/dbtest";

                    Connection con = DriverManager.getConnection(url);
                    Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                      ResultSet.CONCUR_READ_ONLY);

                    ResultSet rs= s.executeQuery(sql);

                    CachedRowSet crs = new CachedRowSetImpl();
                    crs.populate(rs);

                    rs.close();
                    s.close();
                    con.close();

                    return crs;

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

            return null;
    }

    public void StoreProcedure(String sql)
    {

            try
            {
                    Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

                    String url = "jdbc:derby:/home/beastieux/dbtest";
                    Connection con = DriverManager.getConnection(url);
                    Statement s = con.createStatement();

                    s.execute(sql);

                    s.close();
                    con.close();

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

En el caso de conexión a base de datos embebida, la URL contiene la ubicación de la base de datos la cual deberá ser reemplazado de acuerdo a su propia configuración:

String url = "jdbc:derby:/home/beastieux/dbtest";

Instalación y Ejecución de Apache Derby en Linux


En este post tocaremos rápidamente la instalación de la Base de Datos Apache Derby en Linux, específicamente en Debian para la cual deberemos tener los repositorios actualizados para obtener la versión más reciente.

Para probar la conexión de Apache Derby requeriremos de JVM (Máquina Virtual de Java), por ello deberemos tener ambos instalados:

#aptitude install sun-java6-jdk sun-java6-javadb

Luego de la instalación, podremos acceder al directorio ubicado en: /usr/lib/jvm/java-6-sun/db/ donde se ubican una base de datos de ejemplo, pero antes debemos exportar el CLASSPATH actualizado para poder acceder a la administración de Derby desde el terminal:

$export JAVA_HOME=/usr/lib/jvm/java-6-sun/
$export PATH=$JAVA_HOME/bin:$PATH
$export DERBY_HOME=/usr/lib/jvm/java-6-sun/db
$export CLASSPATH=$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar:.

Ahora accederemos a ver la base de datos ejemplo llamada toursdb que se encuentra en la siguiente ruta:
/usr/lib/jvm/java-6-sun/db/demo/databases/toursdb

Ingresar al terminal e ingresar las siguientes instrucciones:

$java org.apache.derby.tools.ij

No olvidarse de los punto y coma al final de cada instrucción:

ij>connect 'jdbc:derby:/usr/lib/jvm/java-6-sun/db/demo/databases/toursdb';
ij>SELECT * FROM countries;
ij>exit;

Si todo se ha hecho como se ha indicado no habrá problema y la sentencia responderá correctamente.

Ahora probaremos creando nuestra propia base de datos.
Primero deberemos ir la directorio donde se creará la base de datos:

$cd $HOME
$java org.apache.derby.tools.ij
ij>connect 'jdbc:derby:dbtest;create=true';
ij>create table usuario(nombre varchar(15), password varchar(30), rol varchar(50));
ij>insert into usuario values('beastieux','zeroo','administrador');
ij>insert into usuario values('apache','derby','sysadmin');
ij>select * from usuario;
NOMBRE         |PASSWORD                      |ROL
--------------------------------------------------------------------------------
beastieux      |zeroo                         |administrador
apache         |derby                         |sysadmin
ij>disconnect;
ij>exit;

Todo lo demás es así de sencillo, las sentencias SQL guardan los estándares, como se mencionan en DB-Derby-wiki.
Para ver la ubicación de la base de datos recién creada, solo fijarse en el directorio desde donde se lanzó la orden de conexión, en mi caso lo hice desde mi $HOME, donde se creó el directorio dbtest, que es el nombre que se puso a la base de datos. Esta podría ser copiada al proyecto desde donde se crea la aplicación en la que podría ser embebida.Así de Fácil.

Base de Datos Relacional Apache Derby


Seguramente  ya muchos de ustedes han oído hablar de  Apache Derby, distrubuida bajo la denominación de Sun Java DB, una Base de Datos que se puede usar de manera embebida o como cliente-servidor.  Esta pequeñisima base de datos Open Source, por el hecho de ocupar muy poco espacio de almacenamiento es usado en diversas aplicaciones que no requieran gran cantidad de información almacenada por la amplitud del mismo, como: navegadores web, clientes de mensajería instantánea, reproductores multimedia, etc. Su uso se limita a lenguajes de programación integradas con JVM como Java, JPython, JRuby, los cuales deberán hacer uso de JDBC para la conexión.

Finalmente, si sientes la necesidad de realizar aplicaciones con base de datos empotrada tienes esta opción, aunque no es la única, habrá que ver hasta donde se puede llegar con él. Existen muchas críticas hacia Derby, una de ellas es que no soporta bindings hacia otros lenguajes de programación que no funcionen bajo JDK, también el uso de memoria que hace en comparación con otros; estas son algunas de las razones para que muchos usuarios se sientan inconformes. Nosotros vamos a sacarle partido en todo lo que se pueda.

A %d blogueros les gusta esto: