无法连接到数据库(未找到合适的驱动程序)

2022-09-01 10:21:58

我的连接代码:

try {           
  Connection con = DriverManager.getConnection("jdbc:sqlite:myDB.sqlite");
  PreparedStatement pstm = con.prepareStatement("insert into hell(username,pssword) " +
"values ('"+tfUname.getText()+"','"+tfUpass.getText()+"')");

  pstm.close();
  con.close();
  JOptionPane.showMessageDialog(null,"Congrats, you have been registered succesfully");
  RegisterWindow rw = new RegisterWindow();
  rw.setVisible(false);
  pack();
  dispose();
} catch(SQLException ex) {
  setTitle(ex.toString());
}

这只是一个将用户名和密码插入数据库的窗口。当我单击按钮时,会出现以下异常:

"java.sql.SQLException: No suitable driver found for jdbc:sqlite:C\\LoginJava2\\myDB.sqlite" 

我找到了一个如何在Java中连接到SQLite数据库的示例,该示例运行良好。我在WindowBuilder(Eclipse)中执行此操作,使用示例中的相同驱动程序。我尝试了不同的驱动程序,但该消息仍然显示。


答案 1

您的类路径缺少包含 sqlite 类和驱动程序的 jar。您需要类似 sqlite-jdbc-3.7.2.jar 或适用的版本。

如果您确定 jar 存在,请尝试在创建连接之前添加以下代码行:

Class.forName("org.sqlite.JDBC");

答案 2

我遇到了同样的问题。我使用了 maven 并添加了依赖项:

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

它可以被编译,我得到:

没有找到适合 jdbc:sqlite:xx.db

我检查了类路径,我确定sqlite-jdbc-3.15.1.jar在那里。我猜由于某种原因,类没有被加载,我不知道为什么。所以我添加了

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

在我的代码的开头。成功了!

并且,我删除了上面的行。它仍然有效!我清理了项目并重新生成它,不再需要Class.forName()!!!我仍然不知道为什么。但问题解决了。我认为 Class.forName() 可用于诊断,如果你需要的类在类路径中。


推荐