SpringBoot集成Access?DB實現數據導入和解析
1.什么是Access DB?
microsoft office access是由微軟發(fā)布的關聯式數據庫管理系統。它結合了 microsoft jet database engine 和 圖形用戶界面兩項特點,是一種關系數據庫工具。它在很多地方得到廣泛使用,例如小型企業(yè),大公司的部門,和喜愛編程的開發(fā)人員專門利用它來制作處理數據的桌面系統。它也常被用來開發(fā)簡單的web應用程序.
優(yōu)點:
存儲方式單一:access管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為(.mdb)的數據庫文件種,便于用戶的操作和管理。
面向對象:access是一個面向對象的開發(fā)工具。它將一個應用系統當作是由一系列對象組成的,通過對象的方法、屬性完成數據庫的操作和管理,極大地簡化了開發(fā)工作。同時,這種基于面向對象的開發(fā)方式,使得開發(fā)應用程序更為簡便。
界面友好、易操作
access是一個可視化工具,用戶想要生成對象并應用,只要使用鼠標進行拖放即可,非常直觀方便。系統還提供了表生成器、查詢生成器、報表設計器以及數據庫向導、表向導、查詢向導、窗體向導、報表向導等工具,使得操作簡便,容易使用和掌握。
access可以在一個數據表中嵌入位圖、聲音、excel表格、word文檔,還可以建立動態(tài)的數據庫報表和窗體等。access還可以將程序應用于網絡,并與網絡上的動態(tài)數據相聯接,輕松生成網頁。
缺點:
access是小型數據庫,既然是小型就有它根本的局限性:access數據庫不支持并發(fā)處理、數據庫易被下載存在安全隱患、數據存儲量相對較小等。而且在以下幾種情況下數據庫基本上會吃不消:
- 數據庫過大,一般access數據庫達到50m左右的時候性能會急劇下降。
- 網站訪問頻繁,經常達到100人左右的在線。
- 記錄數過多,一般記錄數達到10萬條左右的時候性能就會急劇下降。
2.數據準備
測試數據庫下載地址:
3.代碼工程
實驗目標
實現access 數據庫導入
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>springboot-demo</artifactId> <groupId>com.et</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>accessDB</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>net.sf.ucanaccess</groupId> <artifactId>ucanaccess</artifactId> <version>5.0.1</version> </dependency> </dependencies> </project>
controller
主要步驟如下
Saving the uploaded file.
Connecting to the Access database.
Querying data.
Processing and storing results in a list.
package com.demo.controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
@RestController @RequestMapping("/api/access") public class AccessDatabaseController {
// Upload Access database file and query data @PostMapping("/upload") public List<Map<String, Object>> uploadAndQuery(@RequestParam("file") MultipartFile file, @RequestParam("tableName") String tableName) { List<Map<String, Object>> results = new ArrayList<>(); Connection connection = null; try { // Save the uploaded file to the server's temporary directory File tempFile = File.createTempFile("upload-", ".accdb"); file.transferTo(tempFile);
// Connect to the Access database String dbUrl = "jdbc:ucanaccess://" + tempFile.getAbsolutePath(); connection = DriverManager.getConnection(dbUrl); // Query the specified table in the database Statement statement = connection.createStatement(); String query = "SELECT * FROM " + tableName; ResultSet resultSet = statement.executeQuery(query); // Store query results in a List<Map<String, Object>> while (resultSet.next()) { Map<String, Object> row = new HashMap<>(); int columnCount = resultSet.getMetaData().getColumnCount(); for (int i = 1; i <= columnCount; i++) { String columnName = resultSet.getMetaData().getColumnName(i); row.put(columnName, resultSet.getObject(i)); } results.add(row); } // Close the ResultSet and Statement resultSet.close(); statement.close(); // Mark temporary file for deletion upon JVM exit tempFile.deleteOnExit(); } catch (Exception e) { e.printStackTrace(); } finally { // Close the database connection if (connection != null) { try { connection.close(); } catch (Exception e) { e.printStackTrace(); } } } return results;
以上只是一些關鍵代碼,所有代碼請參見下面代碼倉庫
代碼倉庫
- https://github.com/Harries/springboot-demo(Access DB)
4.測試
- 啟動Spring Boot應用
- postman訪問http://127.0.0.1:8088/api/access/upload
以上就是SpringBoot集成Access DB實現數據導入和解析的詳細內容,更多關于SpringBoot Access DB數據導入的資料請關注腳本之家其它相關文章!
相關文章
java代理模式(靜態(tài)代理、動態(tài)代理、cglib代理)
代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;這篇文章主要介紹了Java 中的三種代理模式,需要的朋友可以參考下,希望能給你帶來幫助2021-07-07SpringBoot整合Mybatis實現高德地圖定位并將數據存入數據庫的步驟詳解
這篇文章主要介紹了SpringBoot整合Mybatis實現高德地圖定位并將數據存入數據庫的步驟詳解,本文分步驟通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01SpringBoot整合EasyCaptcha實現圖形驗證碼功能
這篇文章主要介紹了SpringBoot整合EasyCaptcha實現圖形驗證碼功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-02-02Java中構造函數,set/get方法和toString方法使用及注意說明
這篇文章主要介紹了Java中構造函數,set/get方法和toString方法的使用及注意說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01maven打包成第三方jar包且把pom依賴包打入進來的方法
這篇文章主要介紹了maven打包成第三方jar包且把pom依賴包打入進來的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11