使用 Java 创建 .accdb 数据库
Posted
技术标签:
【中文标题】使用 Java 创建 .accdb 数据库【英文标题】:Creating .accdb database using Java 【发布时间】:2017-02-18 04:00:54 【问题描述】:我正在尝试自动创建 .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();
【问题讨论】:
【参考方案1】:您使用 Jackcess 的全新版本 2.1.3,而您链接的五年前的答案使用 1.2.6。在引入第 2 版时,Jackcess 的 API 发生了一些变化。
在您使用的版本中,数据库是使用构建器创建的:
DatabaseBuilder.create(FileFormat, File)
有关如何使用 Jackcess API 的更多信息,请参阅http://jackcess.sourceforge.net/cookbook.html。
【讨论】:
【参考方案2】:为了其他人的清晰和方便,只需在数据库创建功能中进行以下更改
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 文件版本更改为以前的版本。
除了代码没有进行任何更改:)
【讨论】:
如果您想指定各种其他选项,如字符集、时区等,这是创建数据库的好方法。如果您只想提供文件格式和文件,您应该使用静态取而代之的是我的回答中的便捷方法create()
。这要短得多:return DatabaseBuilder.create(Database.FileFormat.V2000, file);
以上是关于使用 Java 创建 .accdb 数据库的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jackcess 在 Java 中创建一个新的 MS Access 文件
MySQL 后端和访问 (.accdb, 2013) 前端自动增量问题