在 Spring Boot 中使用 UCANACCESS

Posted

技术标签:

【中文标题】在 Spring Boot 中使用 UCANACCESS【英文标题】:Using UCANACCESS with Spring Boot 【发布时间】:2020-04-07 23:20:49 【问题描述】:

我正在设置一个非常基本的 Spring-Boot 应用程序,以将一些 Access 数据库内容作为 REST 服务提供。

在将 ucanaccess jar 包含在我的类路径中进行了斗争之后,现在我无法让它连接到我的访问数据库。

我的 spring.datasource 是这样设置的:

spring.datasource.jdbc-url=jdbc:ucanaccess://C:\\Users\\Owner\\Documents\\brigette.accdb;showSchema=true;memory=false
spring.datasource.dialect=net.ucanaccess.hibernate.dialect.UCanAccessDialect

我得到的错误是:

2020-04-08 09:01:28.534  INFO 20740 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-04-08 09:01:28.557  WARN 20740 --- [           main] o.h.e.j.e.i.JdbcEnvironmentInitiator     : HHH000342: Could not obtain connection to query metadata : Failed to get driver instance for jdbcUrl=jdbc:ucanaccess://C:\Users\Owner\Documents\brigette.accdb;showSchema=true;memory=false
2020-04-08 09:01:28.563  WARN 20740 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [agency/newmeta/jsis/BackendDbConfig.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
2020-04-08 09:01:28.568  INFO 20740 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]

访问数据库确实存在于该位置,但如果我使用不存在的数据库,我确实会收到相同的错误。

HHH000342: Could not obtain connection to query metadata : Failed to get driver instance for jdbcUrl=jdbc:ucanaccess://C:\Users\Owner\Documents\lalala.accdb;showSchema=true;memory=false

如果我使用 / 而不是分隔:

HHH000342: Could not obtain connection to query metadata : Failed to get driver instance for jdbcUrl=jdbc:ucanaccess://C:/Users/Owner/Documents/brigette.accdb;showSchema=true;memory=false

关于设置连接字符串我缺少什么?

TIA 布里吉特

【问题讨论】:

您可能会发现this blog post 很有帮助。 谢谢@GordThompson,这非常有帮助。概念证明现在正在工作。 【参考方案1】:

我建议您使用另一种方法:将 spring jpa 与 hibernate 一起使用。 并按照文章: Accessing MS Access with Hibernate 5 and Spring Boot

最终,它将指导您实现一个小应用程序来读取和更新 accdb 数据库。

需要指出的重要一点是源代码中包含的“补丁”必须在您的代码中使用(没有它,您的应用将永远无法运行)。 “补丁”就是hibernate方言:很重要,在文章源码中有报道,文末分享。

【讨论】:

以上是关于在 Spring Boot 中使用 UCANACCESS的主要内容,如果未能解决你的问题,请参考以下文章

在 spring-boot 项目中使用 spring mvc xml 项目

Spring boot在Spring boot中Redis的使用

如何在 spring-boot 中禁用 spring-data-mongodb 自动配置

如何在 Spring Boot 中使用 @Transactional 注解

spring-boot实战09:Spring Boot中使用@Scheduled创建定时任务

在 spring-boot 中使用一个模板引擎渲染多个后缀