1

我正在尝试自动创建一个 .accdb 数据库,但使用该create()函数时出现编译错误:

库文件夹

错误概述

我使用这个 SO 答案中的代码: Create an Access database file (.mdb or .accdb) using Java

public class JackcessLibrary {
    private static Database createDatabase(String databaseName) throws IOException {
        return Database.create(new File(databaseName));
    }

    private static TableBuilder createTable(String tableName) {
        return new TableBuilder(tableName);
    }

    public static void addColumn(Database database, TableBuilder tableName, String columnName, Types sqlType) throws SQLException, IOException {
        tableName.addColumn(new ColumnBuilder(columnName).setSQLType(Types.INTEGER).toColumn()).toTable(database);
    }

    public static void startDatabaseProcess() throws IOException, SQLException {
        String databaseName = "C:/Users/abdulwhab/Desktop/database/db.accdb"; // Creating an MS Access database
        Database database = createDatabase(databaseName);

        String tableName = "Employee"; // Creating table
        Table table = createTable(tableName)
                .addColumn(new ColumnBuilder("Emp_Id").setSQLType(Types.INTEGER).toColumn())
                .addColumn(new ColumnBuilder("Emp_Name").setSQLType(Types.VARCHAR).toColumn())
                .addColumn(new ColumnBuilder("Emp_Employer").setSQLType(Types.VARCHAR).toColumn())
                .toTable(database);

        table.addRow(122875, "Sarath Kumar Sivan","Infosys Limited.");//Inserting values into the table
    }

    public static void main(String[] args) throws IOException, SQLException {
        JackcessLibrary.startDatabaseProcess();
    }
}
4

2 回答 2

4

您使用 Jackcess 的全新版本 2.1.3,而您链接的五年前的答案使用 1.2.6。在引入版本 2 时,Jackcess 的 API 发生了一些变化。

在您使用的版本中,数据库是通过使用构建器创建的:

DatabaseBuilder.create(FileFormat, File)

有关如何使用 Jackcess API 的更多信息,请参阅http://jackcess.sourceforge.net/cookbook.html

于 2017-02-18T12:59:52.637 回答
1

为了其他人的清晰和方便,只需在数据库创建功能中进行以下更改

    File file = new File("C:/Users/abdulwhab/Desktop/database/test.accdb");
    Database db = new DatabaseBuilder(file).setFileFormat(Database.FileFormat.V2000).create();
    return db;

注意:我没有将jackess jar 文件版本更改为以前的版本。

除了代码之外没有进行任何更改:)

于 2017-02-19T07:31:00.350 回答