O HSQLDB é uma ótima opção de banco de dados para utilização nos nossos estudos, extremamente simples e prático. Vocês não vão acreditar no quão fácil é sua instalação, criação, manutenção e utilização.
Primeiro vamos baixá-lo:
http://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_2_3/
Descompactá-lo:
sudo unzip hsqldb-2.3.3
No meu caso irei copiá-lo para um lugar mais conveniente que a pasta Download do meu Ubuntu:
sudo cp -Rap hsqldb-2.3.3 /opt/desenvolvimento
Podemos acessar o diretório e iniciar uma interface swing de gerenciamento:
cd /opt/desenvolvimento/hsqldb-2.3.3/hsqldb
java -cp ./lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
Você deverá ver algo parecido com isso:
Você poderá utilizar essa interface para criar o banco, as tabelas registros e etc.
A melhor parte vem agora. Nós não precisamos de nada disso. Nós faremos tudo no braço, Roots.
Feche essa tela. Não esta, senão não vai mais conseguir ler o post, feche a tela swing do HSQL(dãããã). E abra o eclipse:
cd /opt/desenvolvento/eclipse/
./eclipse
Agora seguiremos a receitinha de bolo. Crie um projeto java no eclipse. Crie um pacote, para armazenamento da classe. Crie uma classe e coloque o código abaixo no método main.
public static void main(String[] args) throws SQLException {
Connection con = DriverManager.getConnection("jdbc:hsqldb:file:/home/marcelo/desenvolvimento/database/marceloDB;ifexists=false", "SA", "");
}
Vá no menu do eclipse Run As-> Java Application e:
Oooops, não funcionou?!? Claro!!! tem que adicionar o jar do hsqldb, no build path do projeto. Não sabe fazer isso? Tá bom, eu ajudo.
Clique com o botão direito no projeto, e vá em properties:
Na aba Libraries, clique em Add External JARS…
E selecione o hsqldb.jar, que no meu caso está em /opt/desenvolvimento/hsqldb-2.3.3/hsqldb/lib
Putz, se precisou de ajuda para isso, lembra de clicar no OK depois de selecionar o arquivo. Haja paciência!
De novo! Vá no menu do eclipse Run As-> Java Application e:
Nada nessa mão, nada nessa outra e Tchanram!!!
Um banco de dados quentinho e fresquinho foi criado em /home/marcelo/desenvolvimento/database/, com o nome de marceloDB, caso já não existisse, pois nesse caso conectaríamos nele sem criar, e com a senha do “SA”, sendo “”.
A frase acima, ficou mais complicada e maior, do que o código em si.
Vamos dar uma olhada como ficaram os arquivos em disco:
cd /home/marcelo/desenvolvimento/database/
ls
E deveremos ver isso:
marceloDB.log marceloDB.properties marceloDB.script marceloDB.script~ marceloDB.tmp
O arquivo mais importante é o marceloDB.script, que contém as informações do banco de dados, tabelas e os registros. Você pode editá-lo manualmente e ele será alterado sempre que executar comandos pela conexão feita lá do java.
Veja abaixo um pequeno exemplo, para aqueles que precisam ver para crer(São Tomé). Crie a classe abaixo e a execute algumas vezes. Veja o resultado na tela. Depois abra o arquivo marceloDB.script e veja como ele ficou agora!
public class ClasseBestaDeDemonstracao {
public ClasseBestaDeDemonstracao() throws SQLException {
}
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(
"jdbc:hsqldb:file:/home/marcelo/desenvolvimento/database/marceloDB;ifexists=true", "SA", "");
}
public static void main(String[] args) throws SQLException {
ClasseBestaDeDemonstracao demo = new ClasseBestaDeDemonstracao();
demo.criaTabelaCliente();
demo.criaCliente();
demo.listaCliente();
}
public void listaCliente() throws SQLException {
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
con = getConnection();
stmt = con.prepareStatement("select * from CLIENTES");
rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt(1) + " - " + rs.getString(2));
}
} finally {
rs.close();
stmt.close();
con.close();
}
}
public void criaCliente() throws SQLException {
Connection con = null;
PreparedStatement stmt = null;
try {
con = getConnection();
stmt = con.prepareStatement(
"insert into CLIENTES(nome, sexo, data_nascimento) values('Marcelo', 'M', sysdate)");
stmt.execute();
} finally {
stmt.execute();
con.close();
}
}
public void criaTabelaCliente() throws SQLException {
Connection con = null;
PreparedStatement stmt = null;
try {
con = getConnection();
stmt = con.prepareStatement(
"CREATE MEMORY TABLE PUBLIC.CLIENTES(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,NOME VARCHAR(255),DATA_NASCIMENTO TIMESTAMP,SEXO CHARACTER(1))");
stmt.execute();
} catch (Exception e) {
// pssss, exceção silenciosa, não contém para ninguém
} finally {
stmt.close();
con.close();
}
}
O ministério da programação certa adverte, fazer conexão com banco de dados sem um gerenciador(J2EE, Spring), pool de conexões, DAO e etc, pode fazer mal ao seu software.
Vou introduzindo os assuntos bem devagar(hum, ulalá), e nos próximos episódios irei melhorando o código, por enquanto, deixarei assim, afinal tem gente que nem conseguiu instalar o java no ubuntu ainda(kkkkkk)!
Para terminal abra o arquivo marceloDB.script e veja com seus próprios olhos, que um dia a terra à de comer, os scripts gerados. O meu ficou assim(somente as últimas linhas):
CREATE MEMORY TABLE PUBLIC.CLIENTES(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,NOME VARCHAR(255),DATA_NASCIMENTO TIMESTAMP,SEXO CHARACTER(1)) ALTER TABLE PUBLIC.CLIENTES ALTER COLUMN ID RESTART WITH 3 ALTER SEQUENCE SYSTEM_LOBS.LOB_ID RESTART WITH 1 SET DATABASE DEFAULT INITIAL SCHEMA PUBLIC GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.SQL_IDENTIFIER TO PUBLIC GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.YES_OR_NO TO PUBLIC GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.TIME_STAMP TO PUBLIC GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.CARDINAL_NUMBER TO PUBLIC GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.CHARACTER_DATA TO PUBLIC GRANT DBA TO SA SET SCHEMA SYSTEM_LOBS INSERT INTO BLOCKS VALUES(0,2147483647,0) SET SCHEMA PUBLIC INSERT INTO CLIENTES VALUES(0,'Marcelo','2015-07-15 23:03:47.000000','M') INSERT INTO CLIENTES VALUES(1,'Marcelo','2015-07-15 23:03:48.000000','M') INSERT INTO CLIENTES VALUES(2,'Marcelo','2015-07-15 23:03:49.000000','M')
Quer uma explicação de HSQLDB baseada em Windows em uma linguagem mais formal, segue então http://www.devmedia.com.br/hypersql-database-com-hibernate-veja-como-utilizar/30280


