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

2023-12-27

我需要将 SQLite 文件中的数据加载到我在 Netbeans 中开发的 java 程序中。 该文件将通过摆动菜单项加载。我在用着SQLitejdbc https://bitbucket.org/xerial/sqlite-jdbc/downloads#tag-downloads作为司机。

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

// 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 添加到库类路径中工具 --> 库以及项目库通过窗口 --> 项目.
  • 我还检查了类路径通过使用这个功能 http://www.mkyong.com/java/how-to-print-out-the-current-project-classpath/。正如预期的那样,它包含 jdbc jar 文件的路径。
  • 我可以通过以下方式连接到数据库Services菜单没有任何问题,所以我可以假设 URL 是正确的,并且 sqlite 在我的系统上运行。
  • 一些操作系统信息:我在 64 位 ARCH Linux 3.12.9-2 上运行 Netbeans 8.0。

有人能告诉我我在这里缺少什么吗?任何帮助表示赞赏!

问题解决了这是适合我的代码:

//...
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);
}
//...

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netbeans 中 SQLite 的 JDBC:找不到合适的驱动程序 的相关文章

随机推荐

  • 使用 pyinotify 过早发出 IN_CLOSE_WRITE 通知

    我遇到以下情况 pyinotify 监视文件中的 IN CLOSE WRITE 事件 我更改文件中的某些内容并保存 事件被触发 我阅读了该文件 发现它没有任何更改 经过一番修改后 我注意到在调试时它工作得很好 我在读取文件的行上设置了一个断
  • 使用 Windows 10 访问 COM 端口

    我有一些愚蠢的代码来访问 Windows COM 端口 只是一些最相关函数的伪代码 open device COMMTIMEOUTS timeouts DCB ComSettings memset ComSettings 0 sizeof
  • 如何让函数返回指向函数的指针? (C++)

    我正在尝试创建一个函数 它接受一个字符 然后根据该字符返回一个指向函数的指针 我只是不确定如何使函数返回指向函数的指针 int f char return 0 int return f char return f 不 说真的 使用 type
  • Ag-grid:在特定的预定义时间内保持打开的工具提示

    我使用的是Ag grid v23 1 1 我需要显示 1 分钟的工具提示 Ag grid不支持这种情况 但在版本 22 的早期我使用过 next lifehack params api context beanWrappers toolti
  • 建议:c++ 中的异步、可移植文件 io

    我正在寻找一个 C 异步 io 库 它应该与 unix 和 windows 系统兼容 有哪些好的图书馆 对于一个同时支持这两个系统的库来说 这要求是否太高了 人们对此事有何经验 Use 增强 asio http www boost org
  • Eclipse Java 错误:无法启动此选择并且最近没有启动

    我在互联网上到处查看并尝试了论坛所说的所有操作 但没有任何效果 这个错误不断出现 我尝试运行我的java项目 不适用于android 即使下拉运行按钮也不起作用 因为它说 不适用 Eclipse 需要查看项目源文件之一中的 main 方法
  • PHP - 保护代码[重复]

    这个问题在这里已经有答案了 可能的重复 如何保护您的软件代码 https stackoverflow com questions 2368064 how to protect your software code 保护我的 PHP 应用程序
  • 正则表达式替换第二次出现的字符

    我有一些以下格式的数据 MM SS 嗯 where MM is minutes ss is seconds and mmm is 3 digit milliseconds like 05 23 236 我试图用点替换第二次出现的冒号 05
  • $this是什么意思

    我见过一些脚本包含 this在具有 OOP 的 PHP 脚本中 我从来不知道它的含义 就像 this gt refresh 也许向我解释一下什么 this指的是 但我确实知道你不能将它用作动态变量 例如 this is a variable
  • 如何像 ps -e 一样显示进程

    Hello 我想制作一个简单的 C 程序 就像 ps i 一样工作 唯一应显示的列是 PID 和 CMD 那是我的代码 include
  • 常见的 SIMD 技术

    在哪里可以找到有关常见 SIMD 技巧的信息 我有一个指令集 并且知道如何编写不复杂的 SIMD 代码 但我知道 SIMD 现在更加强大 它可以容纳复杂的条件无分支代码 例如 ARMv6 以下指令序列将 Rd 的每个字节设置为 Ra 和 R
  • Docker 退出,状态码 139

    我有一个 Net Core 应用程序 它可以在 Docker 映像上运行 我在命令行中输入 docker run d net bridge it name testapp v var test var test microsoft aspn
  • Selenium Webdriver + python - 鼠标悬停后无法隐藏工具提示

    我正在使用 Selenium WebDriver 和 Firefox 在我的网页上测试工具提示 我试图将鼠标悬停在附加工具提示的元素上 测试工具提示是否显示 然后将鼠标悬停在另一个元素上并测试其各自的工具提示 element to clic
  • Angularjs $http 在 GET 上期望 JSON 结果时出现“XML 解析错误:找不到元素位置”错误

    当我提交一个角js httpGET 调用我收到 XML 解析错误 http调用代码片段是 http method GET url myapp api items itemId 错误是 XML Parsing Error no element
  • PySpark:如何根据多个条件附加其他 pyspark 数据帧中的新列?

    我有 pyspark df1 id name email age college 12 Sta email protected cdn cgi l email protection 25 clg1 21 Danny email protec
  • MVC 6 中多个网站的通用 wwwroot 文件夹

    我有多个网站使用 wwwroot assets文件夹 html 主题 css 和 javascript 文件 来加载静态内容 目前我正在复制assets每个站点中的文件夹 我的所有项目都位于一个公共父目录下 我不想复制 wwwroot as
  • 基于 Codeigniter 数据库的配置设置

    我正在使用最新版本的 Codeigniter 2 0 构建一个应用程序 我想你可能会说 我的应用程序是动态的 有点像自定义 CMS 我有一个名为 设置 的数据库表 其中包含以下字段 id name value 基本上我当前正在做的是使用辅助
  • 将 C char[][] 数组封送至 C#

    我已经看了又看并尝试了我能想到的或找到的建议 我仍然没有运气获得我需要的数据 我正在使用第三方 DLL 我相信它是用 C 编写的 我需要用 C 访问此 DLL 中的函数 在大多数情况下 除了一项功能外 我都可以使用此功能 我遇到问题的函数具
  • 防止用户停止进程

    长话短说 我需要创建一个应用程序来监视计算机上的音量 无论如何 计算机用户都不能停止该应用程序 我需要让我的应用程序在计算机启动时启动 这样用户就不能在应用程序不运行的情况下重新启动它来进入会话 到目前为止 我还不知道该怎么做 但通过一些研
  • Netbeans 中 SQLite 的 JDBC:找不到合适的驱动程序

    我需要将 SQLite 文件中的数据加载到我在 Netbeans 中开发的 java 程序中 该文件将通过摆动菜单项加载 我在用着SQLitejdbc https bitbucket org xerial sqlite jdbc downl