SQLException: No suitable driver found for jdbc:derby://localhost:1527 SQL异常:找不到适合jdbc:derby://localhost:1527的驱动程序。

31

我在Netbeans中遇到了这个错误:

java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
这是什么原因,我应该如何解决?

可能是重复的问题,参考臭名昭著的java.sql.SQLException: No suitable driver found - BalusC
19个回答

26

java.sql.SQLException: 在jdbc:derby://localhost:1527/中未找到合适的驱动程序

这个异常有两个原因:

  • 驱动程序没有加载。
  • JDBC URL格式不正确。

在您的情况下,我期望在连接字符串的结尾处看到一个数据库名称。例如(如果您想要创建一个不存在的数据库,请使用create=true):

jdbc:derby://localhost:1527/dbname;create=true

默认情况下,数据库会在启动网络服务器的目录中创建。但是您也可以指定数据库位置的绝对路径:

jdbc:derby://localhost:1527//home/pascal/derbyDBs/dbname;create=true

如果需要,检查一下 derbyclient.jar 是否在类路径上,并且当使用服务器模式时,确保加载适当的驱动程序 org.apache.derby.jdbc.ClientDriver


20

提示:您可以从这里下载它。

如果找不到它,则:

  1. 在项目选择标签中找到您的项目

  2. 右键单击“库”

  3. 点击“添加JAR /文件夹…”

  4. 选择“derbyclient.jar”

  5. 单击“打开”,然后您将看到“derbyclient.jar”位于“库”下

确保您的URL、用户名和密码正确,并运行您的代码:)


11

对于我而言

DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());

DriveManager被帮助了。这样一来,DriveManager确实知道derby EmbeddedDriver的存在。也许分配一个新的EmbeddedDriver太过繁重,但另一方面,Class.forName需要try/catch/doSomethingIntelligentWithException,我不是很喜欢。


普通的应用程序代码不应该调用 DriverManager.registerDriver。该方法用于JDBC驱动程序在注册自己时调用。正确的加载JDBC驱动程序的方法是通过自动驱动程序加载或显式地使用 Class.forName("org.apache.derby.jdbc.EmbeddedDriver") 加载驱动程序类。 - Mark Rotteveel

5

JDBC DriverManager 无法找到适合给定连接URL的Driver。要么在连接数据库之前根本没有加载JDBC驱动程序,要么连接URL错误。由于连接URL看起来很好,我打赌驱动程序根本没有被加载。您需要在应用程序启动期间加载驱动程序,然后再连接数据库。对于Apache Derby,驱动程序类名为org.apache.derby.jdbc.ClientDriver。因此:

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

2
实际上,我认为他们正在使用ClientDriver而不是EmbeddedDriver,基于连接URL。因此应该是org.apache.derby.jdbc.ClientDriver。 - Bryan Pendleton
我的问题也是切换到 derbyclient.jar 而不是 derby.jar 来处理我的网络 derby 实例。 - Blaskovicz

4

当我在Netbeans上编写Java应用程序时,遇到了同样的问题。以下是解决方案:

  1. 在项目选择标签中找到您的项目

  2. 右键单击“Libraries”

  3. 点击“Add JAR/Folder…”

  4. 选择“derbyclient.jar”

  5. 点击“Open”,然后您将在“Libraries”下看到“derbyclient.jar”

  6. 确保您的URL、用户名和密码正确,并运行您的代码 :)


2
如果您正在使用嵌入式Derby,您需要将Derby.jar添加到类路径中。

2
我通过将库添加到我的项目下面的库控制台中来解决了这个问题:
  • 右键单击,然后添加库
  • 添加JAVA DB DRIVER。
我的项目正在运行!

2

这个问题的答案已经提供了一个命令行来演示。当我尝试连接到网络模式derby时,这对我很有用。

  • 在应用程序中加载驱动程序:Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();

  • 连接URL是:"jdbc:derby://localhost:1527/myDB;create=true"

  • 我使用以下命令运行我的应用程序:java -classpath derbyclient.jar:. myAppClass


1
我遇到了同样的问题。在使用连接URL和用户凭证获取连接之前,我缺少了DriverManager.registerDriver()的调用。
在Linux上解决方法如下:
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527//tmp/Test/DB_Name", user, pass);

对于Windows:

DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/C:/Users/Test/DB_Name", user, pass);

1

我曾经遇到过同样的问题,通过在类路径中定义derby.jar位置来解决了这个问题。

java -cp <path-to-derby.jar> <Program>

更精确地说:

java -cp "lib/*:." Program

其中:.包括当前目录。而lib/*不包括jar扩展名(lib/*.jar)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接