前言
之前有完成过一个需求,根据数据库名称提取对应数据库表的数据(有张表内有很多表的信息包括名称、连接信息等),使用这些信息生成一个.mdb文件,通过流返回给前端页面下载
一、mdb数据是什么
mdb (message driven bean)MDB也是EJB中消息驱动Bean的简称,MessageDrivenBean(MDB)。mdb(Microsoft Database)格式是Microsoft Access软件使用的一种存储格式,因其对数据操作的方便性,常用在一些中小型程序中。
在使用jackcess之前,我是直接加载驱动,获取连接这样一步步做下去,然后根据数据,一条条insert这样生成(后台的mdb文件也是几k几十k的加),数据量小的话还行,数据量一多,就经常造成前台等不及直接超时的问题(哪怕后台在一点点的下载)。
也不是没想过异步,但是由于不好确认文件是否下载完成,这种方法就搁置了。
后来公司大佬又做过类似的,几w条数据也是几秒就提取出来了,就去请教了下,了解了Jackcess之后,去网上查询过后,结合之前的数据,也算完成了任务。
二、Jackcess
Jackcess 是一个Java 类库,用来读写微软的Access 数据库。
使用了Jackcess,生成数据的速度确实是几何倍速的提升!
2.1 直接开始代码吧,首先引入依赖
<dependency>
<groupId>com.healthmarketscience.jackcess</groupId>
<artifactId>jackcess</artifactId>
<version>2.1.4</version>
</dependency>
2.2 手动创建、单条插入数值
代码中的Types是java.sql.Types的
//这里同样支持mdb和accdb
Database db = DatabaseBuilder.create(Database.FileFormat.V2000, new File("D:\\geocloud\\mdbdownloads\\new.mdb"));
Table newTable;
try {
//刚才是创建文件,这里是在文件里创建表,字段名,字段类型
newTable = new TableBuilder("Archives")
.addColumn(new ColumnBuilder("档案号")
.setSQLType(Types.INTEGER))
.addColumn

本文介绍了如何使用Jackcess库在Java中处理大型MDB文件,通过实例展示了如何创建表、动态插入数据,以及解决ClassCastException问题。重点讲解了批量插入数据的两种方法,以及遇到的问题和解决策略。
最低0.47元/天 解锁文章
762

被折叠的 条评论
为什么被折叠?



