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.