Muitas vezes desenvolvemos aplicações simples que necessitam de armazenamento de dados sem nenhum grande desempenho mas que seja feita de forma rápida. Uma boa saída é utilizar um banco de dados(SGDB) bem simples como o HSQLDB.

O HSQLDB é um SGDB de código aberto, escrito totalmente e Java o que torna-o portável. Em termos de desempenho, segurança e recursos não podemos compará-lo a outro bancos de dados como Oracle, Postgres e Microsoft SQL, mas para aplicações pequenas em desktop pode ser uma excelente pedida.

Uma das vantagens do HSQLDB é sua simplicidade, a capacidade de poder ser rodado em modo cliente-servidor ou standalone, armazenando os dados em memória, arquivo de texto ou banco de dados.

Veremos agora então como executar, criar um banco de dados e acessá-lo:

Primeiramente baixamos o HSQLDB depois basta descompactá-lo. Depois de descompactado teremos desde o código fonte até alguns scripts, mas que nos interessa é o arquivo hsqldb.jar que é o pacote do HSQLDB que possui desde o driver JDBC até ferramentas para o gerenciamento do banco de dados.

Antes de começarmos a trabalhos com o HSQLDB devemos adicioná-lo ao CLASSPATH:

CLASSPATH = %CLASSPATH%;C:/hsqldb/lib/hsqldb.jar

A interface de gerenciamento em Swing pode ser aberta pelo comando:

java org.hsqldb.util.DatabaseManagerSwing

Ok, agora vamos conectar/criar um banco standalone para ser armazenado na pasta “c:\banco” com o nome do banco “dbteste”

Parâmetros para a conexão

Agora vamos criar nossa tabela:

CREATE TABLE  usuarios(
        id IDENTITY PRIMARY KEY,
        nome VARCHAR(50),
        email VARCHAR(50)
);

O HSQLDB aceita os comando básicos de SQL, com algumas pequenas diferenças, por exemplo o tipo de dado inteiro auto-incrementável é IDENTITY e ele começa a contar de 0(atenção). Com a tabela criada vamos inserir alguns dados:

INSERT INTO usuarios(nome,email) VALUES('Boteco Digital','blogbotecodigital@gmail.com');
INSERT INTO usuarios(nome,email) VALUES('Rodrigo','rodrigo@algumacoisa.com');
INSERT INTO usuarios(nome,email) VALUES('Thiago','thiago@algumacoisa.com');
INSERT INTO usuarios(nome,email) VALUES('Joao','joao@algumacoisa.com');

** DETALHE IMPORTANTE **

Antes de fechar o gerenciador lembre-se de executar o seguinte comando:

SHUTDOWN;

Para os dados serem gravados corretamente.

Para conferir se os dados foram inseridos com êxito execute o seguinte comando:

SELECT * from usuarios

Nosso banco está criado e populado agora basta conectá-lo pelo Java:

try{
    Class.forName("org.hsqldb.jdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:hsqldb:file:/banco/dbteste", "sa", "");
 
    Statement stm= con.createStatement();
    ResultSet rs = stm.executeQuery("SELECT * FROM usuarios");
 
    while(rs.next()){
        String nome = rs.getString("nome");
        String email = rs.getString("email");
 
        System.out.println(nome+" - "+email);
    }
    stm.execute("SHUTDOWN");
}catch(ClassNotFoundException e){
    System.out.println("Erro ao carregar o driver JDBC. ");
}catch(SQLException e){
    System.out.println("Erro de SQL: "+e);
    e.printStackTrace();
}

Na linha 2 carregamos o driver JDBC, este driver está no no pacote hsqldb.jar então não esqueça de colocá-lo no seu CLASSPATH.

Na linha criamos uma conexão através da String jdbc:hsqldb:file:/banco/dbteste. Esta String contém as seguintes informações de conexão:

  • jdbc tipo de driver a ser utilizado para conexão
  • hsqldb este é o driver que utilizaremos para conectar. Ele já foi carregado na memória através da instrução “Class.forName("org.hsqldb.jdbcDriver");
  • file informa que o banco está armazenado em arquivo(standalone)
  • /banco/dbteste onde nosso banco está armazenando, no caso em uma pasta na raiz de diretório chamada banco, que terá arquivo com o nome de dbteste.( c:\banco)

Na linha 5 criamos um objeto Statment para realizar um consulto, na linha 6 executamos a consulta e recuperamos seu retorno.

Da linha 8 até 13 iteramos pelo resultado da consulta e exibimos os valores na tela. Na linha 14 executamos o comando SHUTDOW.

Como vimos este exemplo cria uma banco de dados standalone para uma aplicação local. O HSQLDB também pode funcionar no modo servidor para isso temos que executá-lo através do seguinte comando.

java org.hsqldb.Server -database.0 dbteste2 -dbname.0 dbteste2

Detalhe importante: ele irá criar o banco de dados dentro da pasta que foi executado o comando acima!

Para conecta-lo pelo Java utilizamos o seguinte código:

Connection con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/dbteste2", "sa", "");

Bom isso é tudo pessoal!