找不到JDBC Derby驱动程序

时间:2013-03-17 09:27:50

标签: java sql database jdbc

我已经遵循了JDBC教程:http://docs.oracle.com/javase/tutorial/jdbc/basics/gettingstarted.html,并且设法构建并创建了我自己的JDBC数据库而没有太多的麻烦。但是现在当尝试从java应用程序连接到数据库时,我收到了异常:

  

java.sql.SQLException:找不到合适的jdbc驱动程序:derby: db   目录

然后尝试使用以下方法手动指定JDBC驱动程序时使用:

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

我收到以下异常错误:

  

java.lang.ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver

我很肯定该驱动程序应该没有加载问题,因为这是教程中指定的驱动程序,并且使用该驱动程序创建数据库没有问题。我在事件尝试在连接语句的末尾添加属性“; create = true”以尝试创建一个全新的数据库但我仍然收到相同的异常错误。

请参阅下面的申请代码。 任何帮助都很棒:)。

package com.ddg;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class SQLConnect
{
    Connection Conn = null;
    String URL;
    String Username;
    String Password;

    public SQLConnect()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        }
        catch (ClassNotFoundException e)
        {
            System.out.println(e.toString());
        }
        URL = "jdbc:derby:*directory name*";

        System.out.println("Created SQL Connect");
    }

    public void CreateConnection()
    {
        try
        {
            Conn = DriverManager.getConnection(URL);
            System.out.println("Successfully Connected");
        }
        catch (SQLException e)
        {
            System.out.println(e.toString());
        }
    }

    public void CloseConnection()
    {
        try
        {
            this.Conn.close();
            System.out.println("Connection successfully closed");
        }
        catch (SQLException e)
        {
            System.out.println(e.toString());
        }
    }

    public static void main(String args[])
    {
        SQLConnect sql = new SQLConnect();
        sql.CreateConnection();
        sql.CloseConnection();
    }
}

8 个答案:

答案 0 :(得分:10)

  

java.sql.SQLException:找不到适合jdbc:derby:db的驱动程序   目录

因此,您的错误可能由以下原因引起:

未正确加载驱动程序或URL格式错误。因此,首先您需要确保*.jar在类路径中。看看吧。

还尝试将URL更改为:

jdbc:derby://<path>/<databasename>;create=true

create=true将确保在不存在的情况下创建数据库。

更新

还要看看这个:SQLException: No suitable driver found for jdbc:derby://localhost:1527

答案 1 :(得分:4)

如果您有此类错误

java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver

并且您正在使用netbeans,那么您必须按照以下步骤操作:

  1. 右键点击图书馆
  2. 选择添加库选项,然后从库列表中选择&#34; Java DB Driver&#34;
  3. enter image description here

答案 2 :(得分:2)

你说你已经按照教程了。在本教程中,您必须安装JDBC驱动程序。

  

安装JDBC驱动程序通常包括将驱动程序复制到   您的计算机,然后将其位置添加到您的类路径。

安装驱动程序后运行

java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver

只有当你弄乱了正确的潜水员时才有可能。

您已使用

org.apache.derby.jdbc.EmbeddedDriver

加载驱动程序

但应该使用

org.apache.derby.jdbc.ClientDriver

答案 3 :(得分:2)

Java JDK同时附带

org.apache.derby.jdbc.EmbeddedDriver
org.apache.derby.jdbc.ClientDriver

在eclipse中,将以下jar添加到已使用的JRE(JDK)或显式添加到您的项目中。

[JDK]db/lib/derby.jar (EmbeddedDriver)
[JDK]db/lib/derbyclient.jar (ClientDriver)

对于runtine,你需要为你的java应用程序提供适当的jar。

答案 4 :(得分:1)

参见&#34;设置DERBY_INSTALL&#34;和#34;配置嵌入式Derby&#34;有关详情,请参阅https://db.apache.org/derby/papers/DerbyTut/install_software.html#derby_configure部分。

Derby是JavaSE安装的一部分,我在链接中显示了设置环境变量DERBY_HOME而不是DERBY_INSTALL

C:\> set DERBY_HOME=c:\Program Files\Java\jdk1.8.0_60\db
C:\> set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbytools.jar;.
C:\> cd %DERBY_INSTALL%\bin
c:\Program Files\Java\jdk1.8.0_60\db\bin> setEmbeddedCP.bat

答案 5 :(得分:0)

例如,我一直将所需的jdbc驱动程序放在jre \ lib \ ext目录中。 在我的系统上是:X:\ Java \ jre1.8.0_181 \ lib \ ext 希望有帮助。

答案 6 :(得分:0)

使用 ClientDriver 后,我得到了 java.lang.ClassNotFoundException 。 我使用了最新的Driver Binaries,那是错误的。

那时,最新的驱动程序二进制文件是10.15.1.3,就在这里:Apache Site

我使用Java 8,并且使用Hibernate 5.4.2.Final。 但是,驱动程序是根据Java 9编译的!

答案 7 :(得分:0)

我最近发现,如果您使用jlink创建运行时,则可能需要包括其他jdk模块以允许驱动程序实例化。

在我的情况下,我需要在图像中包含java.namingjava.management模块。