当前位置: 首页 > 面试题库 >

从Linux连接访问数据库

呼延学
2023-03-14
问题内容

我已经创建了我的应用程序并在Windows下对其进行了测试,该Windows可以在Access DB文件中进行读写操作。

但是在现实世界中,它将在linux环境中运行,而我现在遇到了一个大问题,似乎没有用于Linux的驱动程序来访问ms acess
db,这是我现在进行连接的方式:

private static Connection getConnection() {
        if (connection == null) {
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                String conStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + configuration.getAccessDbFile();
                connection = DriverManager.getConnection(conStr);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return connection;
    }

有没有人遇到过类似的事情,有人建议我该怎么办?

这是我在linux上得到的例外:

java.lang.NullPointerException
        at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:207)

问题答案:

在Linux上运行的应用程序访问MS Access数据库或使用ODBC并不常见。ODBC是Windows技术。linux有一些选项,但这不是常见的情况。

如您所知,Linux计算机上没有Access ODBC驱动程序,因此JDBC-
ODBC桥失败。您也许可以安装合适的ODBC驱动程序,但我不知道有没有免费或开源的驱动程序。Linux的defacto ODBC选项为:

  • http://www.unixodbc.org/

基于UnixODBC的Access的商业驱动程序:

  • http://www.easysoft.com/products/data_access/index.html

可以连接到Access数据库的4型JDBC驱动程序:

  • http://www.hxtt.com/access.html

我没有任何个人经验。4型JDBC驱动程序将是理想的选择,但是我怀疑它是否能像广告中所说的那样完美地工作。

(我确定您有理由,但是如果您打算部署到Linux机器上,我想知道为什么要使用Access数据库。我相信让Java应用程序使用Access数据库的唯一好的理由是,如果它是现有的Access,具有自定义程序的Java应用程序,除了Java应用程序之外,还有其他更好的选择;还应考虑一下,如果您使用Access的主要原因是为了使您可以将Access用作用于表单和报告的用户友好GUI工具,您仍然可以将数据存储在限制较少的数据库(Derby,SQLLite,MySQL,PostgreSQL,MS
SQL
Server等)中,然后通过ODBC从Access连接到数据库。)这将允许您在Linux上部署Java应用程序,您的数据库最有意义的地方,仍然使用Access从Windows连接到数据库。我已经做了很多次。)



 类似资料:
  • 主要内容:1.引入jar包,2.配置文件编写,3.编写数据库,4.编写实体类,5.编写Mapper接口,6.在业务层中引入用户的用户名和密码,7.测试1.引入jar包 2.配置文件编写 appilication.properties 需要注意后面需要加上时区,因为当前引入的是SpringBoot2以上的版本 3.编写数据库 4.编写实体类 5.编写Mapper接口 这里是继承了BaseMapper接口 6.在业务层中引入用户的用户名和密码 第一个是导入UserMapper接口 第二个是根据接口去

  • 我们有一个基于微服务的系统,其中一个专用服务对MySQL执行所有与数据库相关的调用(db reader)。 在对< code>db-reader服务的其他服务中不时出现断路错误。 我们发现在此期间发生了Hikari池连接关闭/打开操作。 08:39:25.312 2022-03-28 08:39:25,311 [HikariPool-19 连接关闭] DEBUG com.zaxxer.hikari

  • 我使用在AMPS(windows 10)上安装laravel。 它起作用了。 但是现在我想连接到MySQL。 我创建了一个“blog”数据库并更改了这两个文件:。环境文件: 和 /config/database.php: 但当我想迁移时,仍然会收到以下消息: C:\ProgramFiles(x86)\Ampps\www\blog [illumb\Database\QueryException] S

  • 问题内容: 我有一个要求,即只能从本地主机访问mysql数据库。我必须实现一个可以访问数据库的servlet,以允许该系统中的其他服务器访问数据(servlet可以充当代理)。但是,此系统由一个远程服务器组成,该服务器下载执行以下语句的大部分数据: 有人可以建议我如何编写一个以有效方式流式传输此类数据的servlet吗(我是数据库新手)? 问题答案: 首先,我不建议为此使用servlet。有关正确

  • 我试图从Java连接到MySQL,但我得到以下错误。 谢谢你的帮助,我对此很陌生。我肯定密码和用户名是正确的,所以我不确定从这里去哪里。下面是我连接数据库的代码:

  • 问题内容: 我有这样的代码: 每次尝试访问它时,总会出现恐慌。 像这个: 我以为我可以访问从我设置为全局变量。当我将数据库初始化移动到错误不会出现。 我的代码中哪些部分是错误的? 另外,我是Golang的新手。如果您对如何组织我的代码有任何建议,请告诉我。谢谢.. :) 问题答案: 您的函数中的db变量正在遮盖全局变量。执行此操作时: 它将其分配给新的局部变量db。这是因为它不是来自同一块。根据标