我有一个正在运行的 Java 项目,它使用 Access .accdb 数据库来存储数据。
我正在对我的程序进行更新,以便为用户提供更多功能。
为此,我需要向填充数据的现有表添加一列。
当我研究时,我发现 UCanAccess 不支持
ALTER TABLE TableName ADD ColumName DataType
这是不幸的,但我知道由于低级驱动程序不支持它,UCanAccess 也不支持它。
然后我找到了这个解决方法:
如何使用 UCanAccess 更改表 https://stackoverflow.com/a/35272368/2144390
但这对我也不起作用,因为 1. 我正在使用 .accdb 和 2. 我无法确定用户是否安装了 Microsoft Access。
然后我想到克隆当前表并添加 1 列,将所有数据克隆到其中,删除旧表并将新表重命名为旧表的名称。但我不知道该怎么做。
有谁知道更好的方法或知道如何实现我的想法?
Jackcess 2.1.5 添加了向现有表添加新列的功能。计划扩展 UCanAccess 中的 DDL 支持,以启用ALTER TABLE
,但与此同时,如果您更新项目以使用 Jackcess 2.1.5 或更高版本(代替 UCanAccess 中早期的 Jackcess 版本)lib/
文件夹)然后您可以像这样添加您的列:
// use the Jackcess (2.1.5 or later) API directly
// to add a column to an existing table
//
// Note: Close any open UCanAccess connection first.
//
com.healthmarketscience.jackcess.Database db =
com.healthmarketscience.jackcess.DatabaseBuilder.open(new File(dbFileSpec));
new com.healthmarketscience.jackcess.ColumnBuilder("newCol")
.setType(com.healthmarketscience.jackcess.DataType.LONG)
.addToTable(db.getTable("TableName"));
db.close();
更新日期:2017 年 1 月
UCanAccess 版本 4.0.0 及以上版本现已支持ALTER TABLE
, e.g.,
Statement stmt = conn.createStatement();
stmt.execute("ALTER TABLE TableName ADD COLUMN newCol LONG");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)