Como adicionar o driver de banco (SQLite) ao arquivo .jar?

1 resposta
java
C

Estou tentando fazer um simples teste, apenas me conectando a um banco local, SQLite. Mas, ao tentar executar a partir de um .jar, aparece a mensagem de erro dizendo que o driver não foi encontrado. Não uso nenhuma IDE, compilo os arquivos .java direto pelo terminal.
Meu código:

package Teste;

import java.sql.Connection;
import java.sql.DriverManager;

public class Teste {
    public static void main(String[] args) {
        try {
            Connection c = DriverManager.getConnection("jdbc:sqlite:test.db");
            System.out.println("Teste");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Compilo usando:

javac Teste/Teste.java
jar cfmv Teste.jar manifest.txt Teste/Teste.class sqlite-jdbc-3.8.11.2.jar

manifest.txt:

Main-Class: Teste.Teste
Class-Path: sqlite-jdbc-3.8.11.2.jar

Minha estrutura de pastas:

SQLite/
        sqlite-jdbc-3.8.11.2.jar
        manifest.txt
        Teste/
            Teste.java

Se eu executo na mesma pasta onde o sqlite-jdbc-3.8.11.2.jar se encontra, roda sem problemas. Se movo o Teste.jar gerado para outra pasta, recebo:

java.sql.SQLException: No suitable driver found for jdbc:sqlite:test.db
	at java.sql.DriverManager.getConnection(DriverManager.java:689)
	at java.sql.DriverManager.getConnection(DriverManager.java:270)
	at Teste.Teste.main(Teste.java:9)

Desde já, muito obrigado!

1 Resposta

D

tenta assim:

import java.sql.*;
import javax.swing.JOptionPane;

public class DBConect {

private Connection conexao;

public Statement statement;

public ResultSet resultset;

public PreparedStatement prep;

public void conecta() throws Exception {

Class.forName(“org.sqlite.JDBC”);

conexao = DriverManager.getConnection(“jdbc:sqlite:test.db);

statement = conexao.createStatement();

conexao.setAutoCommit(false);

conexao.setAutoCommit(true);

}

public void exec(String sql) throws Exception {

resultset = statement.executeQuery(sql);

}

public void desconecta()

{

boolean result = true;

try

{

conexao.close();

JOptionPane.showMessageDialog(null,“banco fechado”);

}

catch(SQLException fecha)

{

JOptionPane.showMessageDialog(null,"Não foi possivel "+

"fechar o banco de dados: "+fecha);

result = false;

}

}

}

Criado 13 de fevereiro de 2016
Ultima resposta 2 de set. de 2017
Respostas 1
Participantes 2