1

この質問に対する選択した回答を参照しました: Java: Create MSAccess Database File (.mdb 0r .accdb) using Java .

私のマシンには MS Office 2010 があります。アクセス データベース ファイル (*.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)

回答で利用可能な同じコードを使用しましたが、データベースファイルを保存する場所を尋ねるファイルダイアログを使用した1つの変更があります。

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

}

いくつかの解決策を提案してください。

4

3 に答える 3

0

ここで入手可能な回答によると。唯一の解決策は、既存の空の mdb をコピーし、これに接続してテーブルを作成することです。コードから mdb を作成する方法はありません。

于 2013-10-09T05:56:49.537 に答える