gpt4 book ai didi

java - UCanAccess:将列添加到现有表

转载 作者:行者123 更新时间:2023-11-30 06:50:42 26 4
gpt4 key购买 nike

我有一个可用的 Java 项目,它使用 Access .accdb 数据库来存储数据。我正在为我的程序进行更新,以便为用户提供更多功能。为此,我需要在现有的充满数据的表中添加一列。当我研究时,我发现 UCanAccess 不支持

ALTER TABLE TableName ADD ColumName DataType

这很不幸,但我知道由于低级驱动程序不支持它,所以 UCanAccess 也不能支持它。

然后我找到了这个解决方法:

How to alter table using UCanAccess

但这对我也不起作用,因为 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,例如,

Statement stmt = conn.createStatement();
stmt.execute("ALTER TABLE TableName ADD COLUMN newCol LONG");

关于java - UCanAccess:将列添加到现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41143741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com