Table des matières
Contenu de la question
Solution de contournement
Maison Java JDBC et SQLite – Je ne trouve pas le bon pilote, peu importe ce que j'essaye

JDBC et SQLite – Je ne trouve pas le bon pilote, peu importe ce que j'essaye

Feb 09, 2024 am 10:57 AM

L'éditeur php Yuzai a rencontré un problème lors de l'utilisation de JDBC et SQLite. Peu importe ses efforts, il n'a pas pu trouver de pilote approprié. JDBC est une interface standard permettant à Java de se connecter à la base de données, tandis que SQLite est un moteur de base de données relationnelle intégré léger. Cependant, bien que JDBC fournisse des pilotes pour diverses bases de données, il n'existe aucun pilote spécifiquement conçu pour SQLite. Cela a rendu l'éditeur confus et incapable de se connecter et de faire fonctionner la base de données SQLite normalement. Dans le prochain article, nous explorerons les moyens de résoudre ce problème.

Contenu de la question

À des fins d'apprentissage, j'essaie de créer un programme Java simple et de me connecter à la base de données SQLite. Mais malgré tous mes efforts, je n’ai pas réussi. Je reçois toujours des chauffeurs no 适用于 jdbc:sqlite:database.db. Mais cela devrait être si simple. J'ai essayé de nombreux pilotes du référentiel maven.

J'ai lu et compris la théorie : l'API jdbc gère la communication avec le gestionnaire jdbc, tandis que le pilote jdbc gère la communication avec la base de données. J'ai également appris que lorsque j'exécute le fichier de classe compilé, je dois ajouter le chemin de classe au fichier .jar contenant le pilote de base de données. Par exemple, comme expliqué ici.

Certains tutoriels prétendent devoir utiliser class.forname() pour enregistrer le pilote, mais la documentation Oracle dit :

applications no longer need to explicitly load jdbc drivers using class.forname()]
Copier après la connexion

De plus, le tutoriel SQLite que j'ai suivi n'a jamais enregistré le pilote avant d'exécuter l'drivermanager.getconnection(url); exemple sqlitetutorial.net

Dans mon répertoire e:project J'ai ces fichiers :

database.java
database.class
database.db
sqlite-jdbc-3.44.1.0.jar
Copier après la connexion

Lorsque j'exécute le fichier de classe compilé, j'utilise java -cp ".;sqlite-jdbc-3.44.1.0.jar" database

dans une fenêtre de terminal (PowerShell)

Voici mon code :

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

public class DataBase {
    public static void connect() {
        Connection conn = null;
        try {
            String url = "jdbc:sqlite:database.db";
            conn = DriverManager.getConnection(url);
            
            System.out.println("Connection is established");
            
            conn.close();
            System.out.println("Connection closed.");

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    } // End method connect

    public static void main(String[] args) {
         connect();

    } // End of main method
} // End of class
Copier après la connexion

Si je peux obtenir de l'aide pour me faire avancer, je serais très reconnaissant.

Je suppose que cela a quelque chose à voir avec le fait de ne pas pouvoir trouver le fichier .jar, mais j'ai tout essayé : mettre une copie du fichier .jar n'importe où dans un répertoire différent, le renommer pour le rendre plus simple, et quand ajout Ajouter plusieurs chemins de classe de répertoire, etc. Je ne sais pas ce qui pourrait manquer.

De plus, lorsque j'essaie de faire la même chose dans vscode, en ajoutant le fichier .jar sous "Bibliothèques référencées", cela ne fonctionne toujours pas.

Solution de contournement

Le problème est que le pilote sqlite jdbc est également requis slf4j-api-1.7.36.jar, consultez son dépôt github pour plus de détails :

En d'autres termes, vous devez également mettre slf4j-api-1.7.36.jar dans ce répertoire et utiliser :

java -cp ".;sqlite-jdbc-3.44.1.0.jar;slf4j-api-1.7.36.jar" database
Copier après la connexion

Sur ma machine, cela ferait fonctionner :

d:\temp> java -cp ".;sqlite-jdbc-3.44.1.0.jar;slf4j-api-1.7.36.jar" database
slf4j: failed to load class "org.slf4j.impl.staticloggerbinder".
slf4j: defaulting to no-operation (nop) logger implementation
slf4j: see http://www.slf4j.org/codes.html#staticloggerbinder for further details.
connection is established
connection closed.
Copier après la connexion

Si vous avez class.forname("org.sqlite.jdbc") 明确添加到您的应用程序中,您将能够诊断此问题,因为如果没有 slf4-api-1.7.36.jar 则会导致中(我将 class.forname 添加到 main) :

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
        at org.sqlite.JDBC.<clinit>(JDBC.java:26)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:375)
        at DataBase.main(DataBase.java:23)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
        ... 4 more
Copier après la connexion

Ainsi, même si le chargement explicite du pilote n'est plus nécessaire, il peut fournir des informations de dépannage supplémentaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)