UCanAccess:将列添加到现有 table
UCanAccess: Add column to existing table
我有一个正在运行的 Java 项目,它使用 Access .accdb 数据库来存储数据。
我正在为我的程序进行更新,以便为用户提供更多功能。
为此,我需要向现有的 table 填充数据的列添加一列。
当我研究时,我发现 UCanAccess 不支持
ALTER TABLE TableName ADD ColumName DataType
这很不幸,但我知道由于低级驱动程序不支持它,所以 UCanAccess 也不能支持它。
然后我找到了这个解决方法:
但这对我也不起作用,因为 1. 我正在使用 .accdb 和 2. 我不能确定用户是否安装了 Microsoft Access。
然后我想到用 1 个额外的列克隆当前的 Table,将所有数据克隆到其中,删除旧的并将新的重命名为旧的名称。但是我不知道该怎么做。
有没有人知道更好的方法或知道如何实现我的想法?
Jackcess 2.1.5 添加了向现有 table 添加新列的功能。计划在 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
,例如
Statement stmt = conn.createStatement();
stmt.execute("ALTER TABLE TableName ADD COLUMN newCol LONG");
我有一个正在运行的 Java 项目,它使用 Access .accdb 数据库来存储数据。 我正在为我的程序进行更新,以便为用户提供更多功能。 为此,我需要向现有的 table 填充数据的列添加一列。 当我研究时,我发现 UCanAccess 不支持
ALTER TABLE TableName ADD ColumName DataType
这很不幸,但我知道由于低级驱动程序不支持它,所以 UCanAccess 也不能支持它。
然后我找到了这个解决方法:
但这对我也不起作用,因为 1. 我正在使用 .accdb 和 2. 我不能确定用户是否安装了 Microsoft Access。
然后我想到用 1 个额外的列克隆当前的 Table,将所有数据克隆到其中,删除旧的并将新的重命名为旧的名称。但是我不知道该怎么做。
有没有人知道更好的方法或知道如何实现我的想法?
Jackcess 2.1.5 添加了向现有 table 添加新列的功能。计划在 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
,例如
Statement stmt = conn.createStatement();
stmt.execute("ALTER TABLE TableName ADD COLUMN newCol LONG");