我有一个工作的Java项目,它使用Access .accdb数据库来存储数据。 我正在为我的程序进行更新,以便为用户提供更多功能。 为此,我需要在填充数据的现有表中添加一列。 在我研究过程中,我发现UCanAccess无法支持
ALTER TABLE TableName ADD ColumName DataType
这很不幸,但据我所知,由于低级别的驾驶员不支持,UCanAccess也无法支持。
然后我发现了这个解决方法:
How to alter table using UCanAccess
但这也不适合我,因为1.我使用.accdb和2.我无法确定用户是否安装了Microsoft Access。
然后我有了克隆当前表格的想法,其中包含1个额外的列,将所有数据克隆到其中,删除旧的数据并将新的数据重命名为旧的名称。但我不知道该怎么做。
有没有人知道更好的方法或知道如何实现我的想法?
答案 0 :(得分:3)
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();
UCanAccess 4.0.0及更高版本现在支持ALTER TABLE
,例如
Statement stmt = conn.createStatement();
stmt.execute("ALTER TABLE TableName ADD COLUMN newCol LONG");