jueves, 22 de marzo de 2012

Tutorial : Crear y Conectar con nuestra base de datos con H2 SQL - Parte 3



Para crear nuestra base de datos con H2 SQL, vamos a hacerlo de la siguiente manera, crearemos un archivo creardb.sql, el cual contiene el script que crea la base de datos.









En base a nuestro modelo ER el código sería el siguiente :

create table cliente (
    id int not null auto_increment,
    nombre varchar(55) not null,
    nacimiento date,
    documento varchar(15),
    tipocliente char(1),
    primary key (id)
);

create index idxnombre on cliente(nombre);

create table producto(
    id int not null auto_increment,
    codigo varchar(15),
    descripcion varchar(45),
    precio decimal(7,2),
    primary key (id)
);

create index idxcodigo on producto(codigo);

create table venta (
    id int not null auto_increment,    
    fecha date not null,
    documento varchar(15) not null,
    tipodocumento char(2),
    cliente_id int,
    primary key (id),
    foreign key (cliente_id) references cliente(id)
);

create table detalleventa (
    id int not null auto_increment,    
    cantidad decimal(5,2) not null,
    total decimal(10,2) not null,
    venta_id bigint,
    producto_id int,
    primary key (id),
    foreign key (venta_id) references venta(id),
    foreign key (producto_id) references producto(id)
);




Este archivo lo guardaremos en una carpeta de nuestro proyecto a la que llamaremos querys, en la pestaña de Files o Archivos debiéramos ver algo asi.




Bien ahora simplemente le diremos a nuestro programa que cuando inicie revise si existe la base de datos de no ser asi, que la cree y ejecute el archivo creardb.sql.

/**
     * lee nuestro archivo creardb.sql que se encuentra en /querys/creardb.sql
     * @return String
     * @throws java.io.IOException 
     */
    private static String leerSqlFile() throws java.io.IOException {
        String filePath = String.format("%s/%s", System.getProperty("user.dir"), "querys/creardb.sql");
        byte[] buffer = null;
        //System.out.println(filePath);
        File file = new File(filePath);

        buffer = new byte[(int) file.length()];
        BufferedInputStream f = null;
        try {
            f = new BufferedInputStream(new FileInputStream(filePath));
            f.read(buffer);
        } finally {
            if (f != null) {
                f.close();
            }
        }
        return new String(buffer);
    }

    /**
     * Leemos y ejecutamos nuestro archivo de creacion de Base de Datos
     * @throws ClassNotFoundException
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws IOException
     * @throws SQLException 
     */
    public void crearDB() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException {
        //ejecutamos el script de creacion de la BD
        String createTables = leerSqlFile();
        Class.forName(DRIVER).newInstance();
        Connection con = DriverManager.getConnection("jdbc:h2:" + DB_URL + ";IFEXISTS=TRUE", "sa", "sa");
        java.sql.Statement stm = con.createStatement();
        stm.execute(createTables);
        stm.close();
        con.close();
    }

Dentro de nuestro método main en nuestra clase Minitienda.java vamos a ejecutar nuestro script de creación a la base de datos.

public static void main(String[] args) {
        try {
            H2Util.getInstance().crearDB();
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Minitienda.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(Minitienda.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(Minitienda.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Minitienda.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Minitienda.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


Ejecutamos nuestra aplicación, presionamos la tecla F6.
En nuestra ventana Output o Salida podemos ver que la ejecución ha sido exitosa.


Para comprobar que se creo nuestra base de datos, vamos a ir a nuestra carpeta donde alojamos nuestro proyecto, si hemos seguido los pasos, Netbeans debe haber creado una carpeta con el nombre del proyecto en una carpeta que debe estar en HOME_DEL_USUARIO/NetbeansProjects.
En el caso de GNU/Linux, bueno todos uds saben donde está su Home, pero los amigos Windowseros, tal vez no, para ellos debiera estar en Documents and Settings/SUUSUARIO o en USERS/SUSUARIO.
 
H2Sql cuando crea una base de datos, genera un archivo con extension .h2.db, en Windows tal vez solo vean hasta .h2 porque asi funciona dicho S.O.

Viene de :

Creacion de Aplicación Java J2SE Swing con Netbeans IDE 7


8 comentarios:

  1. disculpa tengo problemas para usar el H2SQL que no lo tengo el programa si me puedes ayudar seria de gran ayuda porfavor ayudammeeee...!!!

    ResponderEliminar
  2. tengo problema para hacer este paso por favor ayudamee siii

    ResponderEliminar
    Respuestas
    1. El h2sql lo descargas de aca :
      http://www.h2database.com/html/main.html

      Eliminar
    2. pork no mejo0r lo subes tu con un link aparte man seria de un buen ayuda serio..!!!

      Eliminar
    3. Gian, este es el enlace directo de descarga de H2SQl, aqui se encuentra el H2.jar
      http://www.h2database.com/h2-2012-04-08.zip

      Eliminar
    4. k base de datos estas k utulizas????

      Eliminar
    5. que base de datos stas k utilizas???

      Eliminar
    6. Gian, H2Database es una "base de datos", similar a como los es Mysql u SQLServer o Postgresql

      Eliminar

 
Powered by Blogger