Como Conectar ao SQLite com Java

Simples, rápido, seguro e portável!


Como Conectar ao SQLite com Java


Muitas vezes estamos desenvolvendo aplicações que a complexidade de diversos outros bancos de dados pode influenciar na praticidade e no desempenho.

Sem dizer que salvar dados em simples arquivos pode ser inseguro e/ou mais complicado.

O bom disso é que existe o SQLite, que é simples, rápido e seguro. Aqui no blog há quase uma série(se é que podemos chamar assim) que mostra procedimentos similares à esse em outras linguagens de programação.

Hoje vamos ver como fazer isso com Java, uma das linguagens mais poderosas quando o assunto é portabilidade.

Vamos lá ao passo à passo de como conectar Java ao SQLite!


1. Crie um arquivo Java, exemplo vim Base.java

public class Base {
  public static void main(String[] args) {
  }
}

2. Adicione os pacotes necessários:

Os nomes são bem intuitivos então dispensa explicação. Na dúvida use: import java.sql.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

3. Crie uma instância da classe Connection e atribua como null:

Connection connection = null;

4. Crie uma exceção para conectar ao banco de dados e rodar os comandos que deseja:

Se ainda não existir, ele criará o arquivo base.db

try {
  // Cria a conexão com o banco de dados
  connection = DriverManager.getConnection("jdbc:sqlite:base.db");
  Statement statement = connection.createStatement();
  statement.setQueryTimeout(30);  // Espera só por 30 segundos para conectar

  // Roda os comandos para o SQLite
  statement.executeUpdate("DROP TABLE IF EXISTS terminalroot");
  statement.executeUpdate("CREATE TABLE terminalroot (id INTEGER, name STRING)");
  statement.executeUpdate("INSERT INTO terminalroot VALUES(1, 'Marcos Oliveira')");
  statement.executeUpdate("INSERT INTO terminalroot VALUES(2, 'James Gosling')");
  ResultSet rs = statement.executeQuery("SELECT * FROM terminalroot");
  while(rs.next()) {
    // Ler os dados inseridos
    System.out.println("NOME DO CARA  : " + rs.getString("name"));
    System.out.println("IDENTIFICAÇÃO : " + rs.getInt("id"));
  }
} catch(SQLException e) {
  // Se a mensagem de erro for: "out of memory",
  // Provavelmente erro ao criar(permissão) ou caminho do banco de dados
  System.err.println(e.getMessage());
}


5. Use o finally para executar uma ação mesmo se houver um erro após a exceção

Para fechar o arquivo ou detalhar o erro anterior

finally {
  try {
    if(connection != null){
      connection.close();
    }
  } catch(SQLException e) {
    // Falhou também para fechar o arquivo
    System.err.println(e.getMessage());
  }
}

O arquivo Base.java completo é esse aqui:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Base {
  public static void main(String[] args) {
    Connection connection = null;
    try {
      // Cria a conexão com o banco de dados
      connection = DriverManager.getConnection("jdbc:sqlite:base.db");
      Statement statement = connection.createStatement();
      statement.setQueryTimeout(30);  // Espera só por 30 segundos para conectar

      // Roda os comandos para o SQLite
      statement.executeUpdate("DROP TABLE IF EXISTS terminalroot");
      statement.executeUpdate("CREATE TABLE terminalroot (id INTEGER, name STRING)");
      statement.executeUpdate("INSERT INTO terminalroot VALUES(1, 'Marcos Oliveira')");
      statement.executeUpdate("INSERT INTO terminalroot VALUES(2, 'James Gosling')");
      ResultSet rs = statement.executeQuery("SELECT * FROM terminalroot");
      while(rs.next()) {
        // Ler os dados inseridos
        System.out.println("NOME DO CARA  : " + rs.getString("name"));
        System.out.println("IDENTIFICAÇÃO : " + rs.getInt("id"));
      }
    } catch(SQLException e) {
      // Se a mensagem de erro for: "out of memory",
      // Provavelmente erro ao criar(permissão) ou caminho do banco de dados
      System.err.println(e.getMessage());
    }

    finally {
      try {
        if(connection != null){
          connection.close();
        }
      } catch(SQLException e) {
        // Falhou também para fechar o arquivo
        System.err.println(e.getMessage());
      }
    }

  }
}

6. Agora faça o download do SQLite JDBC aqui

Exemplo com wget para GNU/Linux:

wget https://github.com/xerial/sqlite-jdbc/releases/download/3.36.0.3/sqlite-jdbc-3.36.0.3.jar

Exemplo com PowerShell para MS/Windows:

1
Invoke-WebRequest -Uri "https://github.com/xerial/sqlite-jdbc/releases/download/3.36.0.3/sqlite-jdbc-3.36.0.3.jar"

Exemplo com cURL, para BSD/macOS:

curl -LO https://github.com/xerial/sqlite-jdbc/releases/download/3.36.0.3/sqlite-jdbc-3.36.0.3.jar

Use o parâmetro -LO, o GitHub tem redirecionamento.

7. Compile seu código e após compilar, rode com o parâmetro -classpath e indique o sqlite-jdbc-[version].jar e o nome da classe:

Se for GNU/Linux/BSD/macOS, use .:

javac Base.java
java -classpath ".:sqlite-jdbc-3.36.0.3.jar" Base

Se for Microsoft Windows, use .;

javac Base.java
java -classpath ".;sqlite-jdbc-3.36.0.3.jar" Base

Possível e provável saída:

NOME DO CARA  : Marcos Oliveira
IDENTIFICAÇÃO : 1
NOME DO CARA  : James Gosling
IDENTIFICAÇÃO : 2

Para mais informações acesse: https://github.com/xerial/sqlite-jdbc .


Veja também

20 Livros sobre Linguagem SQL que você deveria ler



java sqlite


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!