java - 如何创建数据并将其插入到具有特殊名称的表中?

标签 java ms-access jackcess

我正在尝试使用 jackcess 库创建数据库并将数据导入其中。我发现的问题是,如果我创建一个名为“type”的表(这是 jackcess 的保留字),那么我无法使用 ImportBuilder 将数据导入到该表中。生成一个带有前缀“x”的新表(新表将被命名为“xtype”)。

我还尝试使用其他名称创建表,导入数据并将其重命名为保留名称。但我找不到任何重命名表的方法。

该表必须命名为“type”。

我应该做什么?

最佳答案

Jackcess 确实不愿意将文本文件直接导入到名为 type 的新表中,但以下代码似乎可以解决问题:

// open existing database
Database db = DatabaseBuilder.open(new File(
        "C:/Users/Gord/Desktop/foo.accdb"));

String tempTableName = "TemporaryNameForTable";

// import CSV file into new table with temporary name
ImportUtil.Builder ib = new ImportUtil.Builder(db);
ib.setTableName(tempTableName);
ib.importFile(new File("C:/Users/Gord/Desktop/foo.csv"));

// rename the new table
Table mso = db.getSystemTable("MSysObjects");
Row r = CursorBuilder.findRow(mso,
        Collections.singletonMap("Name", tempTableName));
r.put("Name", "type");  // new name is "type"
mso.updateRow(r);
db.close();

关于java - 如何创建数据并将其插入到具有特殊名称的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063145/

相关文章:

Java - 通用泛型函数参数

java - IntelliJ 中的自动变量扩展

Java:GarbageCollectorMXBean getCollectionCount 抛出 java.io.IOException:客户端已关闭

c# - 如何使用 C# 连接到 MS Access 文件 (mdb)?

ms-access - MS Access 2007 VBA DAO.Relation 对象神秘地未设置。这是怎么回事?

java - 使用 Jackcess 时为 "specified network name is no longer available"

java - 使用 Jackcess 在 Java 中更新行

java - Jetty 8 HTTPClient 支持进行 Comet HTTP 连接吗?

SQL:Not Like 产生的结果与 Like 的相反结果不同

java - 调用 executeUpdate 时 UCanAccess/Jackcess 异常禁用我的 Logger 输出