Java UCanAccess:将列添加到现有表中
我有一个正在工作的Java项目,它使用Access.accdb数据库来存储数据。 我正在更新我的程序,为用户提供更多功能。 为了实现这一点,我需要向现有的表中添加一列数据。 当我研究时,我发现UCanAccess无法支持Java UCanAccess:将列添加到现有表中,java,ms-access,jdbc,ucanaccess,Java,Ms Access,Jdbc,Ucanaccess,我有一个正在工作的Java项目,它使用Access.accdb数据库来存储数据。 我正在更新我的程序,为用户提供更多功能。 为了实现这一点,我需要向现有的表中添加一列数据。 当我研究时,我发现UCanAccess无法支持 ALTER TABLE TableName ADD ColumName DataType 这是不幸的,但我明白,由于低级别驱动程序不支持它,UCanAccess也不能支持它 然后我找到了这个解决方法: 但这对我来说也不管用,因为1。我正在使用.accdb和2。我不能确定用户
ALTER TABLE TableName ADD ColumName DataType
这是不幸的,但我明白,由于低级别驱动程序不支持它,UCanAccess也不能支持它
然后我找到了这个解决方法:
但这对我来说也不管用,因为1。我正在使用.accdb和2。我不能确定用户是否安装了Microsoft Access
然后我想到了用一个额外的列克隆当前表,将所有数据克隆到其中,删除旧表,并将新表重命名为旧表的名称。但我不知道怎么做
有谁知道更好的方法或者知道如何实现我的想法吗?Jackcess 2.1.5添加了向现有表中添加新列的功能。有计划扩展UCanAccess中的DDL支持,以启用
ALTER TABLE
,但与此同时,如果您将项目更新为使用Jackcess 2.1.5或更高版本(代替UCanAccesslib/
文件夹中较早的Jackcess版本),则可以这样添加列:
//直接使用Jackcess(2.1.5或更高版本)API
//向现有表中添加列的步骤
//
//注意:首先关闭所有打开的UCanAccess连接。
//
com.healthmarketscience.jackcess.Database db=
open(新文件(dbFileSpec));
新建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
,例如
语句stmt=conn.createStatement();
执行(“ALTER TABLE TableName ADD COLUMN newCol LONG”);
这听起来不错,我可以在UCanAccess仍在运行的情况下更新jackcess吗?我不知道jackcess最近有任何更改可能会导致UCanAccess出现问题。您现在可以使用添加了这些功能的4.0.0