Java SQL 错误,找不到合适的驱动程序

Posted

技术标签:

【中文标题】Java SQL 错误,找不到合适的驱动程序【英文标题】:Java SQL error, no suitable driver found 【发布时间】:2013-01-27 12:00:56 【问题描述】:

我正在尝试编译这段代码,以帮助我连接到我的数据库并检索一些信息来测试它。我在 Windows 7 x64 机器上使用 Netbeans。这是代码:

package passwordprotector;
import java.sql.*;

public class PasswordProtector 

/**
 * @param args the command line arguments
 */
public static void main(String[] args) 
    String host = "jdbc:derby://localhost:1527/PasswordProtector DB";
    String dbUsername = "john"; 
    String dbPassword = "arsenal";

    /*try
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
    catch(ClassNotFoundException e)
        System.out.println(e);
    */

    try
        Connection con = DriverManager.getConnection(host, dbUsername, dbPassword);
        Statement stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery("SELECT * FROM APP.PERSON");

        while (rs.next()) 
            String uName = rs.getString("uname");
            String uPass = rs.getString("upass");
            System.out.println("Username: " + uName + "/n" + "Password: " + uPass);
        
    catch(SQLException e)
        System.err.println(e);
    


当我编译和运行时,我收到这个错误:

java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/PasswordProtector DB
BUILD SUCCESSFUL (total time: 0 seconds)

当我右键单击我的数据库并选择属性时,我可以看到它的位置,如下所示:

Database URL: jdbc:derby://localhost:1527/PasswordProtector

我已经与其他发布过此内容的人进行了核对,他们似乎有一个不正确的 URL 作为问题,但除了发布的那个之外,我看不到任何其他可以使用的 URL。

我已经尝试过使用和不使用字符串主机的结尾“DB”,但都不起作用。

我也已经阅读了here,但仍然无法弄清楚为什么 URl 不正确:

【问题讨论】:

为什么要评论加载驱动? 我读到 Java 6 以上不需要它,如此处所述(最佳答案)***.com/questions/8111534/… 我尝试了有无。都不行。 这是我得到的:运行:java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver 【参考方案1】:

不确定是数据库 URL 连接的问题,而是使用正确的驱动程序。如果数据库是嵌入式的,您应该使用您帖子中评论的驱动程序和我的answer 中的示例,还有tutorial embedded derby。

如果没有,则使用

Class.forName("org.apache.derby.jdbc.ClientDriver");

连接到独立运行的数据库的驱动程序不同。在这种情况下,请参阅 derby network client 文档如何配置和运行 derby 网络客户端。

【讨论】:

老实说,我不确定驱动程序是否已嵌入。我试过用你的答案,我得到:运行:java.lang.ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver 但我也在我的代码中使用了ClientDriver而不是EmbeddedDriver,但都不起作用。 你是怎么跑的,我想知道你是不是在运行嵌入式? 你在运行你的应用程序时是否单独启动derby数据库? 我不确定如何检查,但我认为这回答了您的问题 - 第一次打开 Netbeans 时,我必须右键单击数据库并选择“连接...”。这是一个新项目,我还没有实际可运行的类。 @JohnVasiliou 我可以访问您的系统/数据库吗?【参考方案2】:

确保 derbyrun.jar 在您的类路径中。它位于 JDK 的 db/lib 目录中。

【讨论】:

我已经这样做了,我已将 derbyrun.jar 添加到我的类路径中。在 Netbeans 中,我右键单击我的项目、属性、库、添加 jar 并添加了正确的文件 - 不走运。【参考方案3】:

快速搜索 Maven 和 Derby,在我的 pom 中包含以下内容:

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.10.2.0</version>
</dependency>

之后一切正常,因此如果之前的解决方案不起作用,则可能是库引用问题。

【讨论】:

以上是关于Java SQL 错误,找不到合适的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

H2 java.sql.SQLException:找不到合适的驱动程序

从 JAR 运行时“找不到合适的驱动程序”[重复]

Spring Boot + Flyway + AWS:原因:java.sql.SQLException:找不到合适的驱动程序

groovy:捕获:java.sql.SQLException:即使使用@GrabConfig(systemClassLoader = true)也找不到合适的驱动程序

Jython - 尝试连接到数据库导致 java.sql l.SQLException:找不到合适的驱动程序

在 java 中与 MS Access 数据库建立 SQL 连接时找不到合适的驱动程序