使用Java创建Access数据库文件(.mdb或.accdb)

当前,我有一个应用程序,可以在其中使用JdbcOdbcDriver访问.mdb或.accdb文件以附加一些数据。

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

con = DriverManager.getConnection("jdbc:odbc:MsAccessDSN");

但是在此,我需要配置系统DSN。我们需要添加新的数据源(Microsoft

Access驱动程序),然后需要提供.mdb文件的位置。只有以上代码才能正常工作。

假设我想在其他系统上运行我的应用程序,那么我需要对该计算机执行相同的操作。如果我将应用程序提供给客户端,而他/她不知道如何配置.mdb文件。然后,我的全部精力都将浪费。因此,可以使用任何驱动程序通过Java代码创建.mdb文件,然后将所有数据附加到.mdb文件表中。还是有其他方法可以使Java代码创建.mdb文件并能够访问该数据库文件。

我尝试了以下代码,无需配置系统DNS即可追加数据:

public class TestMsAccess {

private static Connection con;

private static Statement stm;

private static String tableName = "EmpDetail";

private static int id_is = 2;

private static String name_is = "Employee1";

public static void main(String[] args) throws ClassNotFoundException, SQLException {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\MSAccessProject/Employee.mdb", "", "");

stm = con.createStatement();

// enter value into table

String addRow = "INSERT INTO " + tableName + " VALUES ( "

+ id_is + ", '"

+ name_is + "')";

stm.execute(addRow);

if (con != null) { con.close(); }

if (stm != null) { stm.close(); }

}

}

但是问题是,此代码不会自动创建.mdb文件,但是在运行此代码之前创建.mbd文件和表时可以工作。

回答:

Jackcess 2.x的更新:现在使用来创建(或打开)DatabaseBuilder数据库,因此我们要创建一个新的数据库文件

import java.io.File;

import java.io.IOException;

import com.healthmarketscience.jackcess.Database;

import com.healthmarketscience.jackcess.Database.FileFormat;

import com.healthmarketscience.jackcess.DatabaseBuilder;

public class JackcessDemoMain {

public static void main(String[] args) {

String dbPath = "C:/Users/Public/newDb.accdb";

// using try-with-resources is recommended to ensure that

// the Database object will be closed properly

try (Database db = DatabaseBuilder.create(FileFormat.V2010, new File(dbPath))) {

System.out.println("The database file has been created.");

} catch (IOException ioe) {

ioe.printStackTrace(System.err);

}

}

}


Jackcess 1.x的原始答案(不建议使用):

如果要通过Java创建“ .mdb”文件,则可以使用Jackcess Java库,该库是用于读取和写入MS

Access数据库的纯Java库之一。我猜目前支持的版本包括2000-2007。请看以下示例,以更好地理解:

  1. 从http://jackcess.sourceforge.net/下载Jackcess Java库(jackcess-1.2.6.jar), 从http://commons.apache.org/logging/download_logging.cgi 和commons 下载commons-logging-1.1.jar。来自http://www.findjar.com/index.x?query=commons-lang的 -lang-2.0.jar
  2. 将两个罐子都添加到您的类路径中。
  3. 尝试以下代码自动创建数据库:


package com.jackcess.lib;

import com.healthmarketscience.jackcess.ColumnBuilder;

import com.healthmarketscience.jackcess.Database;

import com.healthmarketscience.jackcess.Table;

import com.healthmarketscience.jackcess.TableBuilder;

import java.io.File;

import java.io.IOException;

import java.sql.SQLException;

import java.sql.Types;

/**

*

* @author sarath_ivan

*/

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/compaq/Desktop/employeedb.mdb"; // 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();

}

}

以上是 使用Java创建Access数据库文件(.mdb或.accdb) 的全部内容, 来源链接: utcz.com/qa/429512.html

回到顶部