SQLException:找不到适用于jdbc:derby:// localhost:1527的驱动程序

我在Netbeans中得到这个错误:

java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/ 

这是如何造成的,我该如何解决?

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

这个例外有两个原因:

  • 该驱动程序未加载。
  • JDBC URL格式不正确。

在你的情况,我希望看到一个数据库名称在连接string的末尾。 例如(如果您希望数据库在不存在的情况下创build,则使用create=true ):

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

数据库默认情况下在networking服务器启动的目录中创build。 但是,您也可以指定数据库位置的绝对path:

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

为了以防万一,请检查derbyclient.jar是否在类path中,并且在服务器模式下工作时是否加载了合适的驱动程序org.apache.derby.jdbc.ClientDriver

注意:你可以从这里下载。

如果你找不到,那么

  1. 在项目select选项卡中find您的项目

  2. 右键单击“库”

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

  4. select“derbyclient.jar”

  5. 点击“打开”,你会在你的“库”下看到“derbyclient.jar”

确保你的URL,用户名,密码是正确的,并运行你的代码:)

为了我

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

帮助。 通过这种方式,DriveManager确实知道derby EmbeddedDriver。 也许分配一个新的EmbeddedDriver是沉重的,但另一方面,Class.forName需要try / catch / doSomethingIntelligentWithException,我不太喜欢。

JDBC DriverManager无法为给定的连接URLfind适合的Driver 。 在连接数据库之前根本没有加载JDBC驱动程序,或者连接URL是错误的。 由于连接URL看起来很好,我敢打赌,驱动程序根本就没有加载。 连接数据库之前,您需要在应用程序启动期间加载驱动程序。 对于Apache Derby,驱动程序类名是org.apache.derby.jdbc.ClientDriver 。 所以:

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

我在Netbeans上编写Java应用程序时遇到了同样的问题。这里是解决scheme:

  1. 在项目select选项卡中find您的项目

  2. 右键单击“库”

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

  4. select“derbyclient.jar”

  5. 点击“打开”,你会在你的“库”下看到“derbyclient.jar”

  6. 确保你的URL,用户名,密码是正确的,然后运行你的代码:)

如果使用embedded式Derby,则需要在类path中使用Derby.jar。

这个问题是回答,但提供了一个命令行的插图。 当我尝试一个尽可能简单的testing连接到networking模式德比时,这对我工作。

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

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

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

我通过将库添加到我的项目下面的库控制台来解决这个问题:

  • 右键单击,然后添加库
  • 添加JAVA DB DRIVER。

我的项目正在工作!

我面临同样的问题。 在使用连接URL和用户凭证获取连接之前,我缺lessDriverManager.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); 

也可以在persistence.xml中使用EmbeddedDriver,而jdbc URL指向Derby服务器。 在这种情况下,只需将url更改为指向数据库的path即可。

我尝试了这个线程中提到的一切,只有.registerDriver()为我工作。 这就是我现在代码的一部分:

 DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver()); connection = DriverManager.getConnection(url, user, pass); 

请注意,问题不在embedded式Derby中。

如果Java DB服务器尚未启动,您也可以得到相同的错误。

您可能会错过启动Derby服务器。 一旦derby服务器启动,它就开始监听默认端口1527。

启动脚本的位置如下所示:

视窗:

  <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat 

Linux的:

  <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer 

连接string的语法无效时发生此错误。

您可以使用连接string

 'jdbc:derby:MyDbTest;create=true' 

要么

您可以在命令提示符中使用以下命令,下面的命令成功创build一个名为MyDbTest的新数据库:

 connect 'jdbc:derby:MyDbTest;create=true'; 

我刚碰到这个问题,试了以上的build议,但还是失败了。 没有重复上面提到的,下面是我(你)可能会丢失的东西:如果你正在使用maven,你可能会声明依赖:

 <groupId>org.apache.derby</groupId> <artifactId>derbyclient</artifactId> <version>10.10.1.1</version> 

请注意版本。 它必须与您正在运行的服务器实例兼容。

我解决了我的情况,放弃了提供的maven依赖关系,并手动添加来自“%JAVA_HOME%\ db \ lib”的外部jar,这是我运行的服务器的源。 在这种情况下,我正在testing使用我的本地。

因此,如果您正在使用远程服务器实例进行testing,请查找服务器软件包附带的derbyclient.jar。

如果数据库被创build,并且你已经开始连接,那么你需要的是添加驱动程序jar。 从项目窗口右键单击库文件夹,转到:c:\ program files \ sun \ javadb \ lib \ derbyclient.jar。 加载文件,你应该能够运行。

祝一切顺利