www.fontes.pro.br

 

HSQLDB: bando de dados escrito em Java

 

Banco de Dados HSQLDB

O Hypersonic SQL Database (HSQLDB) é um servidor de banco de dados (SGBD), de código aberto , escrito totalmente na linguagem Java .

O HSQLDB é um sistema de bancos de dados relacional de código livre, totalmente escrito em Java (portanto totalmente portátil) que é leve e rápido, podendo ser usado para aplicações simples onde não se espera uma carga de dados e acesso muito alta. O banco pode ser instalado e executado em vários modos, mas a grande vantagem de utilização do HSQLDB é a possibilidade de agregarmos o banco de dados ao pacote de nossas aplicações para garantir persistência dos dados. A suíte office OpenOffice , na sua versão 2.0, inclui o HSQLDB como engine de armazenamento de dados.

 

Acesse aqui a página do projeto: http://www.hsqldb.org

Acesse aqui a documentação de guia do usuário.

 

Principais características

 

Antes de iniciar

Antes de iniciar presumo que você tem um ambiente de desenvolvimento com JDK, Eclipse ou NetBeans e se a aplicação for para a Web o Web Tools funcionando. Também é necessário que se saiba desenvolver aplicações Stand Alone simples ou páginas simples em JSP.

 

DOWNLOAD

Aqui você encontra o download da última versão (na data deste tutorial era a 1.8.0.8 [3,32MB])

 Neste link você encontra o servidor (.jar) já configurado para ser utilizado [762KB]. Basta descompactar o arquivo dentro do diretório C:/FONTES/.

 

INSTALAÇÃO

A instalação do banco é simples: um arquivo .zip ( binários, documentação (inclusive Javadocs), código-fonte e o arquivo hsqldb.jar (aprox. 640 Kb)). Por enquanto só precisaremos do arquivo hsqldb.jar.
Descompacte o arquivo em uma pasta qualquer, criando a estrutura de diretórios:

O pacote de download inclui:

  • os fontes (pasta src);
  • documentação (doc);
  • aplicações de exemplo (demo).

 

Mas o que realmente interessa no momento é o pacote hsqldb.jar na pasta lib. Este jar, de cerca de 683 Kb, contém o servidor do HSQLDB, aplicações gráficas e de linha de comando para administração, e um driver JDBC para acesso por clientes remotos. É possível gerar novos pacotes contendo, por exemplo, apenas o servidor, ou apenas o driver JDBC – mas o conjunto todo é tão pequeno que a maioria dos desenvolvedores usa este pacote “tudo em um”.

 

CONFIGURAÇÃO

ECLIPSE:

Para que o banco de dados esteja disponível em sua aplicação no Eclipse, importe o arquivo hsqldb.jar para o diretório PRJ/WebContent/WEB-INF/lib/ (onde PRJ é nome do seu projeto). Para importar o arquivo .jar, selecione o diretório PRJ/WebContent/WEB-INF/lib/ no Package Explorer do Eclipse, clique com o botão direito do mouse, selecione Import , selecione General/File System como método para importação, clique next e escolha o diretório onde o arquivo hsqldb.jar se encontra. Selecione o arquivo e clique em Finish .
É importante observar que no Package Explorer do Eclipse o arquivo será mostrado como parte do diretório Web App Libraries e não do diretório PRJ/WebContent/WEB-INF/lib/ .

 

NETBEANS:

Para que o banco de dados esteja disponível em sua aplicação no Netbeans, adicione o Driver hsqldb.jar na opção Banco de Dados/Drivres.

Depois realize a operação de Conexão usando:

OBSERVAÇÃO: Selecione o esquema: PUBLIC

Pronto é só isso aí!!

 

EXECUÇÃO

 

O HSBSDB pode funcionar em diversos modos:

 

EM MODO SERVIDOR :

Para executarmos o gerenciador no modo servidor, devemos invocar o programa Server. O programa recebe alguns argumentos para que possamos iniciar ou criar um novo banco de dados. Podemos passar alguns argumentos por linha de comando, um deles é o argumento -? que apresenta uma ajuda na tela.
Abaixo, veremos a chamada ao servidor iniciando o banco de dados denominado DBEmpresa.Abra um editor de texto e cole este texto:
          
                     java -classpath ./lib/hsqldb.jar org.hsqldb.Server -database.0 javadiscos -dbname.0 javadiscos

Salve o arquivo com o nome “run_server_hsqlfb.bat”

-------- ou -------

 java -classpath ./lib/hsqldb.jar org.hsqldb.Server

Salve o arquivo com o nome “run_server_hsqlfb.bat”

 

EM MODO SERVIDOR WEB:

Abaixo, veremos a chamada ao servidor iniciando o banco de dados denominado DBEmpresa.Abra um editor de texto e cole este texto:
          
                     java -classpath ./lib/hsqldb.jar org.hsqldb.WebServer -database.0 javadiscos -dbname.0 javadiscos

 

EM MODO STAND ALONE OU MEMÓRIA:

Neste modo basta utilizar o driver.

 

ARQUIVOS DE CONFIGURAÇÃO:

A configuração do HSQLDB em modo servidor e Web pode ser passada como argumento ou em arquivos de configuração.

 

  Execute o arquivo: "fontes_run_server.bat" para rodar o servidor de banco de dados HSQLDB.

 

FERRAMENTA DE GERENCIAMENTO

 

O HSBSDB possui uma ferramenta de gerenciamento bastante rudimentar.

Para iniciá-la digite:

java -classpath ./lib/hsqldb.jar org.hsqldb.util.DatabaseManager

 

 

  Execute o arquivo: "fontes_Manager.bat" para rodar o gerenciador do banco de dados.

CONECTANDO AO HSQLDB

 

Servidor normal:
Tipo: HSQL Database Engine Server;
URL: jdbc:hsqldb:hsql://localhost/javadiscos.

Servidor Web:
Tipo: HSQL Database Engine Web Server;
URL: jdbc:hsqldb:http://localhost:8090/javadiscos.

 

EXEMPLO  (O banco de dados da Java Discos)

Vamos criar 4 tabelas: Gravadora, Venda, Artista, CD e ItemVenda.

 


ATIVIDADE: Para isso basta executar o seguinte script SQL.

CREATE TABLE Gravadora (
     id BIGINT NOT NULL IDENTITY,
     nome VARCHAR(100) NOT NULL,
     PRIMARY KEY(id)   
);
CREATE TABLE Venda (
     id BIGINT NOT NULL IDENTITY,
     dataVenda DATETIME NULL,
     PRIMARY KEY(id)
);
CREATE TABLE Artista (
     id BIGINT NOT NULL IDENTITY,
     nome VARCHAR(100) NOT NULL,
     banda BIT NULL,
     pais VARCHAR(50) NOT NULL,
     PRIMARY KEY(id)
);
CREATE TABLE CD (
     id BIGINT NOT NULL IDENTITY,
     idGravadora BIGINT,
     idArtista BIGINT NOT NULL,
     nome VARCHAR(100) NOT NULL,
     faixas LONGVARCHAR NULL,
     preco FLOAT NOT NULL,
     foto BINARY NULL,
     duplo BIT NULL,
     PRIMARY KEY(id),
     FOREIGN KEY(idArtista)
     REFERENCES Artista(id)
     ON DELETE NO ACTION
     ON UPDATE NO ACTION
);

CREATE TABLE ItemVenda (
     idVenda BIGINT NOT NULL,
     idCD BIGINT NOT NULL,
     PRIMARY KEY(idVenda, idCD),
     FOREIGN KEY(idVenda)
     REFERENCES Venda(id)
     ON DELETE NO ACTION
     ON UPDATE NO ACTION,
     FOREIGN KEY(idCD)
     REFERENCES CD(id)
     ON DELETE NO ACTION
     ON UPDATE NO ACTION
);

 

INSERINDO DADOS:

INSERT INTO tabela [(coluna [, ...])]
VALUES (expressão [, ...]);

Onde:
tabela = nome da tabela na qual serão inseridos os dados;
coluna = nome de uma das colunas da tabela;
expressão = valor a ser inserido na coluna especificada.

Obs.: SQL não é case sensitive (não diferencia maiúsculas de minúsculas).

 

  • Formato depende do tipo:

    Número inteiro: 0, 100, -50;
    Número real: 0.5, -4.9, 29.90;
    Booleano: 1, TRUE, 0, FALSE;
    String: 'Abc', '', 'Com ''aspas'' simples';
    Data: '2006-10-07', '1981-06-15';
    Hora: '18:49:00', '07:15:16'.

     

     

 

SELECT colunas FROM tabela;

Onde:
colunas = nomes das colunas cujos dados serão recuperados, separados por vírgulas;
tabela = nome da tabela da qual serão recuperados os dados.

Obs.: Podemos utilizar * para representar todas as colunas.

 

-- Obtém todos os dados de todas as gravadoras.

SELECT * FROM Gravadora;


-- Obtém o nome e o país de todos os artistas/bandas.

SELECT nome, pais FROM Artista;


-- Obtém o nome e o preço de todos os CDs.

SELECT nome, preco FROM CD;

 

ATIVIDADE:

Responda às perguntas:

Qual é o código da gravadora Sony Music?

Quais CDs foram gravados pela Sony Music?

Quais CDs do Chico Buarque são vendidos pela Java Discos?

 

Cláusula WHERE:

SELECT colunas FROM tabela WHERE condição;

Onde:
condição = expressão lógica (resulta em verdadeiro ou falso).

 

Lógicos: NOT, OR, AND;
Relacionais: =, <, <=, >, >=, <>, !=;
String:
    LIKE 'padrão';
   Uso de coringas: % ou _.
Outros:
   IS NULL, IS NOT NULL;
   BETWEEN x AND y;
   IN (x1, x2, ..., xn).

 

-- Gravadora com chave-primária = 0.

SELECT * FROM Gravadora WHERE id = 0;


-- Artistas cujo nome termina com a letra e.

SELECT * FROM Artista WHERE nome LIKE '%e';


-- CDs que custam entre R$ 20,00 e R$ 30,00.

SELECT * FROM CD WHERE preco BETWEEN 20 AND 30;

 

ATIVIDADE:

Responda às perguntas:

Quais os CDs de Chico Buarque e Marisa Monte?

Quais CDs custam menos de R$ 25,00?

Quais CDs foram feitos de forma independente (sem gravadora)?

 

Cláusula ORDER BY:

SELECT colunas FROM tabela
WHERE condição
ORDER BY colunas;

Onde:
colunas = nomes das colunas usadas na ordenação e o critério (ASC = ascendente, DESC = descendente).

 

-- CDs em ordem crescente de nome.

SELECT * FROM CD ORDER BY nome ASC;


-- CDs em ordem decrescente de nome.

SELECT * FROM CD ORDER BY nome DESC;


-- Artistas em ordem crescente de país, depois nome.

SELECT * FROM Artista ORDER BY pais, nome;

 

ATIVIDADE:

Tente ordenar:

Bandas em ordem crescente de nome, depois artistas em ordem crescente e nome;

CDs por preço (ascendente e descendente).

 


 

O que achou?

Fontes