quarta-feira, 24 de março de 2010

Exemplo de uso do HSQLDB com a ide Netbeans gerando o arquivo para distribuição

    Para quem não conhece, HSQLDB é um banco de dados desenvolvido utilizando a linguagem de programação java. Este software pode ser utilizado no modo cliente-servidor ou standalone, no modo cliente-servido ele se comporta como os demais bancos de dados, fica aguardando conexões através de uma rede de comunicação. No modo standalone (abordado neste tutorial) o banco de dados permite acesso de apenas um cliente de cada vez, esta característica é interessante no desenvolvimento de aplicações pequenas que requerem persistência de pouca quantidade de dados. Outro diferencial do HSQLDB é que por conta do seu tamanho (aproximadamente 6 MB) pode ser distribuído juntamente com a aplicação.
         Neste tutorial iremos criar uma aplicação simples que acessa o banco, salva e recupera registros, também será demonstrado como utilizar o Netbeans para gerar o arquivo de distribuição de aplicações:
          (i) Primeiramente é necessário configurar o ambiente de desenvolvimento, para este tutorial foi utilizado o Netbeans 6.5 e o hsqldb-2.0.0-rc7.
            (ii) Inicie o Netbeans e crie um novo projeto java
            (iii)Crie um novo formulário Jframe e nas configurações do projeto: 
                  botão direito no projeto>definir configuração>personalizar
                 Selecione a classe criada como sendo a classe principal em seguida monte uma tela semelhante a da próxima figura.

Nesta tela temos três botões auto explicativos, cabe aqui apenas um alerta: a ação de criar o banco só pode ser executada uma vez, pois caso ocorra uma tentativa de criar um banco que já existe, ocorrerá uma exceção.

            (iv)Para cada botão adicione um actionListener, isso pode ser feito através da aba de propriedades de cada botão ou simplesmente com um duplo clique no botão que automaticamente gera o actionListener e posiciona o cursor dentro do método.
              (v)Agora é necessário adicionar o HSQLDB ao projeto, isso pode ser feito com um clique do botão direito do mouse no ícone bibliotecas>adicionar jar/pasta e selecionar o local onde o hsqldb.jar está armazenado.
            (vi)Então deve ser codificadas as três ações que o programa poderá executar: criar o banco, inserir e listar:
--------------------------------------------------------------------------------------------------------------
           public void criaBancoDados(){
      try {
            Class.forName("org.hsqldb.jdbcDriver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Inicial.class.getName()).log(Level.SEVERE, null, ex);
        }
        Statement stmt = null;
        ResultSet result;
        Connection c;


        try {
        c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", "");
            stmt = c.createStatement();
            stmt.execute("CREATE TABLE Gravadora ( id BIGINT IDENTITY NOT NULL PRIMARY KEY ,nome VARCHAR(100) NOT NULL);");
            stmt.executeUpdate("shutdown");


            c.commit();
            stmt.close();
        c.close();
        } catch (SQLException ex) {
            Logger.getLogger(Inicial.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
------------------------------------------------------------------------------------------------------------

   public void insereDados(){
         try {
            Class.forName("org.hsqldb.jdbcDriver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Inicial.class.getName()).log(Level.SEVERE, null, ex);
        }
        Statement stmt = null;
        ResultSet result;
        Connection c;


        try {
            c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", "");
            stmt = c.createStatement();
            stmt.execute("insert into gravadora (nome) values ('EMI');");

            stmt.executeUpdate("shutdown");


            c.commit();
            stmt.close();
        c.close();
        } catch (SQLException ex) {
            Logger.getLogger(Inicial.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
------------------------------------------------------------------------------------------------------------

 public void buscaDados(){
         try {
            Class.forName("org.hsqldb.jdbcDriver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Inicial.class.getName()).log(Level.SEVERE, null, ex);
        }
        Statement stmt = null;
        ResultSet result;
        Connection c;


        try {
            c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", "");
            stmt = c.createStatement();
            result = stmt.executeQuery("select * from  gravadora;");


             while (result.next()) {
                  String nome = result.getString("nome");
                  System.out.println(nome);
             }


            stmt.executeUpdate("shutdown");


            c.commit();
            stmt.close();
        c.close();
        } catch (SQLException ex) {
            Logger.getLogger(Inicial.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
------------------------------------------------------------------------------------------------------------
 Observações:
        (i)Cada um destes métodos deve ser chamado a partir de seu botão específico.
    (ii)Para acessa o banco não é necessário inserir a uma url para localização uma vez que estamos trabalhando com o HSQLDB no modo standalone. O nome de usuário "SA" é o valor default do próprio sistema.
       (ii)O código acima foi gerado com o auxílio da IDE e está sujeito a incompatibilidade no tratamento de exceções.

         Vamos agora executar o projeto fora da IDE:
           O arquivo executável está localizado na pasta dist do projeto, para rodar basta digitar o código java -jar "url" a partir do seu terminal. Esta informação é fornecida no console da IDE após ser executada a ação de limpar e construir.
        Para distribuir sua aplicação basta selecionar a opção limpar e construir na IDE , acessar a pasta dist no seu projeto, criar um pacote com o seu conteúdo e está pronto.
  


  

Um comentário: