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.
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
java
sqlite
Marcos Oliveira
Desenvolvedor de software