当前位置: 首页 > 知识库问答 >
问题:

Netbean中SQLite的JDBC:找不到合适的驱动程序

周玺
2023-03-14

我需要将数据从SQLite文件加载到我在Netbeans中开发的java程序中。该文件将通过swing菜单项加载。我使用sqlitejdbc作为驱动程序。

以下是我认为重要的代码块:

// header stuff
package aufgabe_9;

import java.sql.*;

//...

// menu item opening the file
private void mitemOpenFileActionPerformed(java.awt.event.ActionEvent evt)  
{                                              

    /**
     * Handles the dialogue for selecting and loading file.
     */
    JFileChooser fileChoose = new JFileChooser();
    fileChoose.showOpenDialog(this); //'this' calls the current object

     //Load the sql file
     try {
        String filePath = fileChoose.getSelectedFile().toString();
        Connection conn = DriverManager.getConnection("jdbc:sqlite:" +  
                    filePath);

        //Close the connection
        if (conn != null)
            conn.close();

    }


    catch (SQLException e){System.err.println("Database problem: " + e);}
    }                                  
}

//...

运行程序并通过菜单加载文件时,我收到以下错误:

java.sql.SQLException: No suitable driver found for jdbc:sqlite:/home/levent
/temp/A9AProbeflaeche.db

阅读了相应的stackexchange帖子后,我了解到此问题可能是由(1)文件URL格式错误或(2)驱动程序未加载引起的。以下是一些进一步的信息:

  • 我添加了sqlitejdbc-3.7.2。通过工具jar到库类路径--

有人能告诉我我错过了什么吗?感谢任何帮助!

这里解决的问题是适用于我的代码:

//...
private void mitemOpenFileActionPerformed(java.awt.event.ActionEvent evt)   
{                                              

    /**
    * Handles the dialogue for selecting and loading file.
    */
    JFileChooser fileChoose = new JFileChooser();
    fileChoose.showOpenDialog(this); 

    //Load the sql file
    try {
        //Get file path
        String filePath = fileChoose.getSelectedFile().toString();

        //Open connection
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:" + filePath);

        //Do stuff...                       

        //Close the connection
        conn.close();

    }

    //"Multicatch":
    catch (SQLException | ClassNotFoundException e) { 
    System.err.println("Database problem: " + e);
}
//...

共有1个答案

康鹏云
2023-03-14

您可能需要加载驱动程序类,以便它使用以下代码将自己注册到DriverManager:Class.forName("org.sqlite.JDBC");

注意:这只需要在您的应用程序中调用一次。

在Java包含ServiceLoader API之前,这是一个标准过程,现在DriverManager使用该API注册在类路径中找到的驱动程序,但驱动程序需要声明一个名为Java的文件。sql。包含其jar的META-INF\服务目录中驱动程序类名称的驱动程序。

 类似资料:
  • 问题内容: 我希望有一个人可以帮助我。我正在研究一个与SQLite数据库连接的简单应用程序。以下是我的连接代码: 这只是一个在数据库中加载用户名和密码的窗口。我的问题是,当我单击按钮时,出现以下异常: (我找到了一个有关如何使用Java连接到SQLite数据库的示例,我发现该示例运行良好) 这个程序我正在窗口构建器(日食)中做。我使用的示例中使用的驱动程序相同。我不知道我是否必须使用其他驱动程序。

  • 问题内容: 我正在尝试编写一个程序以在eclipse中连接到MySQL数据库,但出现错误 “ java.sql.SQLException:找不到合适的驱动程序” 。 Java代码是: } 控制台选项卡中的输出为: 我已经使用了MySQL Connector / J。将其解压缩到MySQL安装目录中,并将jar文件添加到CLASSPATH中。 另请参阅此图像。有一个 !在项目根目录上标记。image

  • java。sql。SQLException:找不到适合jdbc的驱动程序:h2:tcp://localhost/当我尝试使用java web应用程序连接到h2数据库时,抛出了~/ZadatakDB。 我可以使用H2控制台没有任何问题,ping是成功的。 我还将h2-1.3.176 jar文件添加到库和WEB-INF/lib中。 下面是我用来连接的Java方法: 我会错过什么? 我还将添加Stack

  • 我的一些代码有问题,我已经搜索并尝试了我所知道的一切,但没有任何运气。 场景: > 应用程序检查JDBC驱动程序是否存在,在本例中是H2驱动程序(org.H2.driver) 如果不存在,应用程序将下载JDBC驱动程序并将其添加到类加载器中,如下所示:(注意:storageDataManager是我用于SQL方法的一个类) 当Storage ageDataManager运行第一个查询时,它会尝试与

  • 我已经检查了这个问题的所有消息,但它是一样的,它不起作用。我必须用java连接到sql服务器2008数据库,我已经添加了sqljdbc4.jar但什么也没有。 我做的不好,如果你还需要什么,请告诉我。 我收到这条消息: Java语言sql。SQLException:未找到适合jdbc的驱动程序:sqlserver://xxx.xxx.xxx.xxx:1433;databaseName=ccis;用

  • 我使用的是用于MariaDB的连接器,但它不起作用。 下面是连接代码: 我得到: 除了将其作为外部jar添加到库之外,我还将其作为驱动程序添加到NetBeans(服务)中的数据库中。此外,如果我删除,它也不能正常工作。