Usando SQLite com o Java

Deixe um comentário

Estou ouvindo muito falar do SQLite esses dias, para os desinformados:

SQLite é uma biblioteca em linguagem C que implementa um banco de dados SQL embutido. Programas que usam a biblioteca SQLite podem ter acesso a banco de dados SQL sem executar um processo RDBMS separado.

Fonte: http://pt.wikipedia.org/wiki/SQLite

Atualmente o SQLite possui várias extensões para várias linguagens, eu como programador Java, logicamente, escolhi uma que se adeque a linguagem que uso.

Primeiramente precisei encontrar uma maneira de usar o SQLite no Java, já que o SQLite é escrito para C/C++. Existem vários, eu escolhi o sqlite4Java por ser o mais atual no momento em que escrevo esse post.

Depois de encontrado, fiz o download de apenas 2.9MB de um arquivo zipado. Dentro do arquivo encontrei um jar, um zip com o código fonte,outro zip com a documentação e várias bibliotecas pré-compiladas, tanto pra Linux, como pra Mac OS e Windows.

Para usar lembre-se de adicionar o sqlite4.java ao seu classpath e deixar os arquivos das bibliotecas pré-compiladas na mesma pasta.

Criando uma conexão com o banco

public class TesteSQLite{
  public SQLiteConnection criarConexao() throws SQLiteException{
      SQLiteConnection conn = null;
      conn = new SQLiteConnection(new File("pessoas.db"));
      conn.open();
      return db;
}

Criando uma tabela e executando comandos DDL

 public static void criarTabela() {
      SQLiteConnection conn = null;
      String SQL = "DROP TABLE IF EXISTS pessoas ;CREATE  TABLE pessoas("
      + "nome VARCHAR(10),sobrenome VARCHAR(20))";
      try {
         conn = createConnection();
         conn.exec(SQL);
      } catch (SQLiteException e) {
         e.printStackTrace();
      } finally {
         conn.dispose();
      }
  }

O método exec executa um comandos DDL ou DML sem parâmetros

Populando a tabela e outros comandos

   public static void adicionarDados() {
       SQLiteConnection conn = null;
       SQLiteStatement stmt = null;
       String SQL = "INSERT INTO pessoas VALUES (?,?)";
       try {
           conn = createConnection();
           stmt = conn.prepare(SQL);
           stmt.bind(1, "Demétrio");
           stmt.bind(2, "Menezes Neto");
           stmt.step();
       } catch (SQLiteException e) {
           e.printStackTrace();
       } finally {
           stmt.dispose();
           conn.dispose();
       }
   }

Aqui temos mais alguns métodos como o prepare(String sql),o bind(int index, valor)* e o método step(),o primeiro retorna algo similar ao PreparedStatement,  o segundo envia um valor como parâmetro, lembra bastante os sets do PreparedStatement e o ultimo serve como executa qualquer outro tipo de comando SQL.

* Esse método é sobrecarregado várias vezes, se adequando a vários tipos de valor.

Realizando a consulta

Podemos realizar uma consulta simplemente fazendo um while(stmt.step()), assim  ele irá realizar a consulta e pegar os dados resultantes da mesma através dos metodos columnString(int numerodacoluna),pois os dados são strings,  caso fossem inteiros seria columnInt(int numerodacoluna).

  public static void imprimirDados() {
    SQLiteConnection conn = null;
    SQLiteStatement stmt = null;
    String SQL = "SELECT * FROM pessoas";
    String formato = "%s\t\t|%s\t\n";
    try {
       conn = createConnection();
       stmt = conn.prepare(SQL);
       System.out.printf(formato, stmt.getColumnName(0).toUpperCase(),
          stmt.getColumnName(1).toUpperCase());
       formato = "%s\t|%s\t\n";
       while (stmt.step()) {
          System.out.printf(formato, stmt.columnString(0), stmt.columnString(1));
       }
    } catch (SQLiteException e) {
       e.printStackTrace();
    } finally {
       stmt.dispose();
       conn.dispose();
    }

  }

Aqui vemos outro tipo de uso do step(),  que agora serve como uma espécia de iterador.

Testando o código

  public static void main(String args[]) {
    criarTabela();
    adicionarDados();
    imprimirDados();
  }
}

Essa foi minha breve explicação de como o Java funciona com o SQLite através do sqlite4java,  qualquer dúvida existente é só deixar um comentário.

Desenvolvendo para Android…

Deixe um comentário

Há mais ou menos um mês fiquei com uma vontade extraordinária de desenvolver algo para mobile, como eu estudo Java na universidade, isso não iria ser um desafio tão grande, tirando pela parte de aprender as APIs. De lá pra cá vim aumentando minha curiosidade mais e mais pelo sistema mobile da Google: O Android. Mais

Fim do mundo em Pixels.

Deixe um comentário

Gostei bastante da GC de transformar os objetos tornando-os feitos de quadradinhos.

cmus: Um player em modo texto

Deixe um comentário

Nesses últimos dias tenho procurado muitas aplicações em modo texto, simplesmente por serem leves e funcionais. Para IRC estou usando o Irssi, ao invés do xchat-gnome, e tem me servido bem depois que aprendi a configurá-lo, mas isso fica pra outro dia.

Hoje eu vim falar de um player chamado cmus e como o própio site do programa diz :”cmus é um pequeno, rápido e poderoso player de música no console para linux e *BSD.

CMUS player rodando no modo library(2)

CMUS player rodando no modo library(2)

Mais

Configurando Joystick no Gentoo

Deixe um comentário

Hoje me vi em uma situação diferente, meu irmão ganhou um joystick usb para jogar no computador e eu tive que fazê-lo funcionar no gentoo. Minha primeira reação foi procurar no google, onde achei uma página no wiki do Gentoo explicando como ativar os joysticks no Gentoo,o que me ajudou muito, mas não o bastante.

Para podermos adicionar os drivers corretos ao kernel, precisaremos descobrir qual a fabricante do joystick, para isso:

#lsusb | grep -i joystick 

Você deverá ver algo semelhante a:

Bus 004 Device 002: ID 0079:0006 DragonRise Inc. Generic USB Joystick

Agora que sabemos qual a fabricante vamos até o “menuconfig” do kernel

#cd /usr/src/linux && make menuconfig

ou se preferir:

#genkernel --menuconfig all

Ativando as opções no kernel:

Device Drivers -->
    Input Device Support -->
        <*> Joystick Interface
        <*> Event Interface
Device Drivers -->
    HID Devices  --->
        <*>   USB Human Interface Device (full HID) support
Special HID drivers  --->
        <*> DragonRise Inc. support
             [*]   DragonRise Inc. force feedback support

Não esqueçam de adicionar a use joystick as USE flags no make.conf para ativá-lo em alguns programas

[],s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.