Usando SQLite com Java

Por essa nem eu esperava. Estou me aventurando no mundo do Java, depois de tudo que eu falei mal dessa linguagem. Mas fazer o que, não dá pra trabalhar com uma linguagem só :p No fundo, Java é muito legal. Depois de aprender a sintaxe básica do Java, resolvi me aventurar também no SQLite e de quebra, matei dois coelhos com uma pedrada só.

O SQLite é uma biblioteca escrita em C que fornece um banco de dados que dispensa configurações/ajustes. É criado um novo arquivo no disco e a biblioteca se encarrega de todas as operações sobre ele, dispensando um processo separado para o SGBD, como é comum na maioria dos bancos de dados. Para mais informações, consulte o site oficial (http://sqlite.org).

O exemplo abaixo é extremamente básico, pois ainda estou aprendendo as manhas. Let's work!

Para começar, baixe a biblioteca do SQLite aqui. O .jar disponível funciona tanto em Linux, como em Windows e Mac. Inclua a biblioteca em seu projeto. No caso do NetBeans, procure a aba Projetos, selecione seu projeto, vá em Bibliotecas, botão direito e selecione Adicionar JAR/Pasta, informando a localização do arquivo baixado.

O exemplo baseia-se em um cadastro de pessoas, contendo nome e idade. São três classes: Pessoa (o "The book is on the table" da orientação a objetos, todo mundo que está aprendendo OO faz essa classe), SQLite, onde estão implementados os métodos para inserção e listagem e a classe Exemplo, a classe principal do projeto.

Classe Pessoa:

package testesqlite;

public class Pessoa {
	private int idade;
	private String nome;

	public Pessoa(String nome, int idade) {
		this.nome = nome;
		this.idade = idade;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getIdade() {
		return this.idade;
	}

	public void setIdade(int idade) {
		this.idade = idade;
	}
}

Classe SQLite

package testesqlite;

import java.sql.*;
import java.util.Vector;

public class SQLite {
	private Connection conn;
	private Statement stm;

	public SQLite(String arquivo) throws SQLException, ClassNotFoundException {
		Class.forName("org.sqlite.JDBC");
		this.conn = DriverManager.getConnection("jdbc:sqlite:" + arquivo);
		this.stm = this.conn.createStatement();
	}

	public void initDB() {
		try {
			//Remove e cria a tabela a cada execução. Mero exemplo
			this.stm.executeUpdate("DROP TABLE IF EXISTS pessoas");
			this.stm.executeUpdate("CREATE TABLE pessoas ("
			+ "nome varchar(70) PRIMARY KEY NOT NULL,"
			+ "idade integer);");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void insert(Pessoa pessoa) {
		try {
			this.stm = this.conn.createStatement();
			this.stm.executeUpdate("INSERT INTO pessoas VALUES (\""
			+ pessoa.getNome() + "\","
			+ pessoa.getIdade() + ")");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void removePessoa(String nome) {
		try {
			this.stm = this.conn.createStatement();
			this.stm.executeUpdate("DELETE FROM pessoas WHERE nome = \"" + nome + "\"");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public Vector getAll() {
		Vector lista = new Vector();
		ResultSet rs;
		try {
			rs = this.stm.executeQuery("SELECT * FROM pessoas ORDER BY idade");

			while (rs.next()) {
				lista.add(new Pessoa(rs.getString("nome"), rs.getInt("idade")));
			}
			rs.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return lista;
	}
}

Classe Exemplo (main)

package testesqlite;
import java.util.Iterator;

public class Exemplo {
	public static void main(String[] args) {
		try {
			SQLite dbCon = new SQLite("pessoas.db");

			dbCon.initDB();
			dbCon.insert(new Pessoa("Jonnas", 19));
			dbCon.insert(new Pessoa("Fulano", 20));
			dbCon.insert(new Pessoa("Beltrano", 10));

			Exemplo.listaTodos(dbCon);

			System.out.println("Removemos a pessoa com o nome Fulano e listamos novamente\n");
			dbCon.removePessoa("Fulano");

			Exemplo.listaTodos(dbCon);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void listaTodos(SQLite dbCon) {
		Iterator it = dbCon.getAll().iterator();
		Pessoa hs;
		while (it.hasNext()) {
			hs = (Pessoa) it.next();
			System.out.println("Nome:" + hs.getNome());
			System.out.println("Idade:" + hs.getIdade() + "\n");
		}
	}
}

O código tá bem amador ainda, mas dá pra ter uma noção de como funciona o SQLite com Java. É criado um arquivo chamado "pessoas.db" que será o banco de dados. É criada uma tabela "pessoas" e inserido três registros nela. Todos os registros são listados, remove-se uma das pessoas e lista-se novamente.

Baixe aqui o projeto criado no NetBeans (com a biblioteca já incluída).

Abraço e até a próxima!

1 comentário para “Usando SQLite com Java”

  1. Hugo disse:

    Não sei pra que serve um programa que gera um banco novo toda vez que o programa roda novamente. Esse não é o propósito de um banco de dados.
    Fora esse detalhezinho, esse exemplo está ótimo!
    Obrigado =)

Comente você também

* Copie este código:

* Cole ou digite o código aqui:

Google