Conectando Java com HSQLDB
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!