我在Netbeans中遇到了这个错误:
java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
这是什么原因,我应该如何解决?我在Netbeans中遇到了这个错误:
java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
这是什么原因,我应该如何解决?java.sql.SQLException: 在jdbc:derby://localhost:1527/中未找到合适的驱动程序
这个异常有两个原因:
在您的情况下,我期望在连接字符串的结尾处看到一个数据库名称。例如(如果您想要创建一个不存在的数据库,请使用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
。
提示:您可以从这里下载它。
如果找不到它,则:
在项目选择标签中找到您的项目
右键单击“库”
点击“添加JAR /文件夹…”
选择“derbyclient.jar”
单击“打开”,然后您将看到“derbyclient.jar”位于“库”下
确保您的URL、用户名和密码正确,并运行您的代码:)
对于我而言
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 RotteveelJDBC DriverManager
无法找到适合给定连接URL的Driver
。要么在连接数据库之前根本没有加载JDBC驱动程序,要么连接URL错误。由于连接URL看起来很好,我打赌驱动程序根本没有被加载。您需要在应用程序启动期间加载驱动程序,然后再连接数据库。对于Apache Derby,驱动程序类名为org.apache.derby.jdbc.ClientDriver
。因此:
Class.forName("org.apache.derby.jdbc.ClientDriver");
当我在Netbeans上编写Java应用程序时,遇到了同样的问题。以下是解决方案:
在项目选择标签中找到您的项目
右键单击“Libraries”
点击“Add JAR/Folder…”
选择“derbyclient.jar”
点击“Open”,然后您将在“Libraries”下看到“derbyclient.jar”
确保您的URL、用户名和密码正确,并运行您的代码 :)
这个问题的答案已经提供了一个命令行来演示。当我尝试连接到网络模式derby时,这对我很有用。
在应用程序中加载驱动程序:Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
连接URL是:"jdbc:derby://localhost:1527/myDB;create=true"
我使用以下命令运行我的应用程序:java -classpath derbyclient.jar:. myAppClass
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527//tmp/Test/DB_Name", user, pass);
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/C:/Users/Test/DB_Name", user, pass);
我曾经遇到过同样的问题,通过在类路径中定义derby.jar位置来解决了这个问题。
java -cp <path-to-derby.jar> <Program>
更精确地说:
java -cp "lib/*:." Program
其中:.
包括当前目录。而lib/*
不包括jar扩展名(lib/*.jar
)。