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!
vim Base.java
public class Base {
public static void main(String[] args) {
}
}
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;
Connection
e atribua como null
:Connection connection = null;
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());
}
finally
para executar uma ação mesmo se houver um erro após a exceçãoPara 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());
}
}
}
}
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"
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.
-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 .