Pergunta

Sinto-me atraído pela limpeza que um banco de dados de arquivo único oferece.Qual biblioteca de driver/conector existe para conectar e usar SQLite com Java.

Eu descobri uma biblioteca wrapper, http://www.ch-werner.de/javasqlite, mas existem outros projetos mais proeminentes disponíveis?

Foi útil?

Solução

O wiki lista mais alguns wrappers:

Outras dicas

Encontrei sua pergunta enquanto procurava informações com SQLite e Java.Pensei em adicionar minha resposta, que também postei no meu blog.

Já faz algum tempo que codifico em Java.Eu também conheço o SQLite, mas nunca o usei… Bem, eu o usei através de outros formulários mas nunca em um aplicativo que eu codifiquei.Então eu precisava dele para um projeto esta semana e é tão simples de usar!

Encontrei um driver Java JDBC para SQLite.Basta adicionar o Arquivo JAR para o seu classpath e importe java.sql.*

Seu aplicativo de teste criará um arquivo de banco de dados, enviará alguns comandos SQL para criar uma tabela, armazenará alguns dados na tabela e os lerá e exibirá no console.Ele criará o teste.db arquivo no diretório raiz do projeto.Você pode executar este exemplo com java -cp .:sqlitejdbc-v056.jar Test.

package com.rungeek.sqlite;

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

public class Test {
    public static void main(String[] args) throws Exception {
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
        Statement stat = conn.createStatement();
        stat.executeUpdate("drop table if exists people;");
        stat.executeUpdate("create table people (name, occupation);");
        PreparedStatement prep = conn.prepareStatement(
            "insert into people values (?, ?);");

        prep.setString(1, "Gandhi");
        prep.setString(2, "politics");
        prep.addBatch();
        prep.setString(1, "Turing");
        prep.setString(2, "computers");
        prep.addBatch();
        prep.setString(1, "Wittgenstein");
        prep.setString(2, "smartypants");
        prep.addBatch();

        conn.setAutoCommit(false);
        prep.executeBatch();
        conn.setAutoCommit(true);

        ResultSet rs = stat.executeQuery("select * from people;");
        while (rs.next()) {
            System.out.println("name = " + rs.getString("name"));
            System.out.println("job = " + rs.getString("occupation"));
        }
        rs.close();
        conn.close();
    }
  }

Entendo que você perguntou especificamente sobre o SQLite, mas talvez Banco de dados HSQL seria um ajuste melhor com Java.Ele é escrito no próprio Java, roda na JVM, suporta tabelas na memória, etc.e todos esses recursos o tornam bastante utilizável para prototipagem e testes unitários.

Há um novo projeto SQLJet essa é uma implementação Java pura do SQLite.Ele ainda não suporta todos os recursos do SQLite, mas pode ser uma opção muito boa para alguns dos projetos Java que funcionam com bancos de dados SQLite.

O projeto David Crawshaw(sqlitejdbc-v056.jar) parece desatualizado e a última atualização foi em 20 de junho de 2009, fonte aqui

eu recomendaria Garfo Xerial do wrapper Crawshaw sqlite.Substituí sqlitejdbc-v056.jar pelo arquivo sqlite-jdbc-3.7.2.jar do Xerials sem nenhum problema.

Usa a mesma sintaxe de A resposta de Bernie e é muito mais rápido e com a biblioteca sqlite mais recente.

O que é diferente do SQLite JDBC da Zentus?

O driver SQLite JDBC original do Zentus http://www.zentus.com/sqlitejdbc/ O próprio é um excelente utilidade para o uso de bancos de dados SQLite do idioma Java, e nossa biblioteca SQLITEJDBC também depende de sua implementação.No entanto, sua versão pura de Java, que traduz totalmente os códigos C/C ++ do SQLite em Java, é significativamente mais lenta em comparação com sua versão nativa, que usa binários de sqlite compilados para cada sistema operacional (Win, Mac, Linux).

Para usar a versão nativa do SQLITE-JDBC, o usuário teve que definir um caminho para os códigos nativos (DLL, jnilib, então os arquivos, que são programas JNDI C) usando argumentos de linha de comando, por exemplo, -djava.library.path = (Caminho para a DLL, Jnilib, etc.) ou -dorg.sqlite.lib.path, etc.Esse processo foi propenso a erros e incômodo para dizer a todos os usuários para definir essas variáveis.Nossa biblioteca SQLiteJDBC elimina completamente esses inconvenientes.

Outra diferença é que estamos mantendo este SQLITEJDBC Libray atualizado para a versão mais recente do mecanismo SQLite, porque somos um dos usuários mais quentes desta biblioteca.Por exemplo, o SQLITE JDBC é um componente central do kit de ferramentas UTGB (University of Tokyo Genoma), que é nossa utilidade para criar navegadores de genoma personalizados.

EDITAR :Como sempre, quando você atualiza algo, haverá problemas em algum lugar obscuro do seu código (aconteceu comigo).Teste teste teste =)

A postagem de Bernie é muito útil.Não foi possível votar (não tenho reputação suficiente :()).Mas ajudou muito.Só para reiterar!

http://www.zentus.com/sqlitejdbc/

Aqui você pode encontrar o jar SQLite JDBC mais recente.Basta adicionar o jar ao seu caminho de classe e pronto!:) Você pode executar o código de exemplo de Bernie para testar se está tudo bem.

http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html

Aqui você pode encontrar ajuda sobre a sintaxe SQL para SQLite.Um brinde ao SQLite :)

Ao compilar e executar o código, você deve definir o valor das opções do caminho de classe.Assim como o seguinte:

javac -classpath .;sqlitejdbc-v056.jar Text.java

java -classpath .;sqlitejdbc-v056.jar Text

Por favor, preste atenção a "". " e o esparado ";" (Win, o Linux é ":")

O código sqlitejdbc pode ser baixado usando git em https://github.com/crawshaw/sqlitejdbc.

# git clone https://github.com/crawshaw/sqlitejdbc.git sqlitejdbc
...
# cd sqlitejdbc
# make

Observação:Makefile requer curl binário para baixar bibliotecas/deps sqlite.

O código de exemplo leva a um vazamento de memória no Tomcat (após a remoção da implantação do webapp, o carregador de classe ainda permanece na memória), o que causará um outofmemory eventualmente.A maneira de resolver isso é usar o sqlite-jdbc-3.7.8.jar;é um instantâneo, então ainda não aparece para o maven.

Erro de digitação: java -cp .:sqlitejdbc-v056.jar Test

deveria estar: java -cp .:sqlitejdbc-v056.jar; Test

observe o ponto e vírgula depois de ".jar", espero que ajude as pessoas, pode causar muitos problemas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top