gpt4 book ai didi

java - 使用 Jackcess 在 Java 中创建新的 MS Access 文件

转载 作者:行者123 更新时间:2023-12-02 06:39:49 25 4
gpt4 key购买 nike

我已引用此问题的选定答案:Java: Create MSAccess Database File (.mdb 0r .accdb) using Java .

我的机器上有 MS Office 2010。我正在尝试创建 Access 数据库文件(*.mdb/*.accdb)。但是,文件仍然没有被创建,抛出以下异常:

Exception in thread "main" java.io.FileNotFoundException: given file does not exist: C:\Users\473886\Desktop\employeedb1.mdb
at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:360)
at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:170)
at mdb.MDBWriter.createDatabase(MDBWriter.java:93)
at mdb.MDBWriter.startDatabaseProcess(MDBWriter.java:107)
at mdb.MDBWriter.main(MDBWriter.java:120)

我使用了答案中可用的相同代码,并进行了一项修改,我使用了文件对话框,该对话框会询问我要在哪里保存数据库文件:

public class MDBWriter {

public static String saveFile(Frame f, String title, String defDir, String fileType) {
FileDialog fd = new FileDialog(f, title, FileDialog.SAVE);
fd.setFile(fileType);
fd.setDirectory(defDir);
fd.setLocation(50, 50);
fd.show();
return (fd.getDirectory() + "\\" + fd.getFile());
}

private static Database createDatabase(String databaseName) throws IOException {
// return Database.create(new File(databaseName));
File file = new File(databaseName);
return new DatabaseBuilder(file)
.setFileFormat(Database.FileFormat.V2010)
.open();
}

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 fileName = saveFile(new Frame(), "Save...", ".\\", "*.mdb");
String databaseName = "D:\\employeedb1.accdb"; // Creating an MS Access database
Database database = createDatabase(fileName);

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 {
startDatabaseProcess();
}

}

请提出一些解决方案。

最佳答案

如果你想创建一个数据库,你需要调用DatabaseBuilder.create(),而不是open()(它会打开现有数据库)。

关于java - 使用 Jackcess 在 Java 中创建新的 MS Access 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19263937/

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