【问题标题】:JavaFx SQLite driver is not suitableJavaFx SQLite 驱动程序不适合
【发布时间】:2021-09-25 12:47:28
【问题描述】:

我正在尝试连接到本地设备 (Ubuntu) 上的 SQLite 数据库。 我的设置是 VS Code with Maven

错误

java.sql.SQLException: 找不到适合 jdbc:sqlite:/home/idir/embag/chek/Data/Checks.sql 的驱动程序

Database.java,连接方法

public void Connect() {
    String AbsolutePath = new File("").getAbsolutePath();
    path = "jdbc:sqlite:"+ AbsolutePath + DATABASE_PATH + DATABASE_NAME ;        
    try{
        Class.forName("com.mysql.cj.jdbc.Driver");
        conn = DriverManager.getConnection(path);
        if (conn != null){
            DatabaseMetaData meta = conn.getMetaData();
            System.out.println("The driver name is " + meta.getDriverName());
            System.out.println("A new database has been created.");
        }    
    }
    catch(Exception e){
        System.out.println(e.toString());
    }
}

Maven pom.xml

<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.36.0.1</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>

模块信息.java

requires java.sql;
requires mysql.connector.java;

我尝试了什么

  • +3 小时的搜索没有希望

【问题讨论】:

  • 您使用了错误的 JDBC 驱动程序;您正在使用 MySQL 驱动程序,但看起来您使用的数据库是 SQLite。使用 SQLite 驱动程序,您可以在这里找到:github.com/xerial/sqlite-jdbc
  • 感谢您的回复真正帮助我指明了正确的道路。

标签: java sql sqlite maven jdbc


【解决方案1】:

不要混用数据库引擎

您要求您的 MySQL 驱动程序使用用于 SQLite 的字符串建立连接。

MySQL 和 SQLite 是两个完全独立的不同数据库引擎。所以你的代码没有意义。


顺便说一句……

在现代 Java 中,不需要调用 Class.forName。 JDBC 驱动程序现在通过Java SPI 工具自动加载。

通常最好将用于配置数据库连接信息的代码与访问数据库的代码分开。让第一个生成一个 DataSource 对象,然后传递给第二个。

【讨论】:

  • 非常感谢您的回复。确实这是我的一个严重错误,我仍然通过删除您指向的 mysql 来修复它。并将这一行添加到模块文件中: requires org.xerial.sqlitejdbc;
【解决方案2】:

我通过删除先前响应中指出的 MySQL 依赖项解决了这个问题。

添加到Module-info.java

requires org.xerial.sqlitejdbc;

也将此添加到pom.xml

<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
    <resource>META-INF/services/java.sql.Driver</resource>
</transformer>

【讨论】:

  • 只有在创建胖 JAR(阴影 JAR)时才需要最后一部分。
猜你喜欢
  • 1970-01-01
  • 2017-08-26
  • 2014-08-12
  • 1970-01-01
  • 2016-04-02
  • 2012-12-09
  • 2014-09-17
  • 2019-03-08
相关资源
最近更新 更多