gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 08:09:19 24 4
gpt4 key购买 nike

目前我有一个可以 Access .mdb 或 .accdb 的应用程序 使用 JdbcOdbcDriver 文件附加一些数据。

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:MsAccessDSN");

但在此,我需要配置系统DSN。我们需要添加新的数据源(Microsoft Access 驱动程序),然后需要提供 .mdb 文件的位置。只有这样上面的代码才能工作。

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

我试过这段代码,它在不配置系统 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. 下载 Jackcess Java 库 (jackcess-1.2.6.jar) 来自 http://jackcess.sourceforge.net/ 和 commons-logging-1.1.jar 来自 http://commons.apache.org/logging/download_logging.cgi 和 commons-lang-2.0.jar 来自 http://www.findjar.com/index.x?query=commons-lang
  2. 将这两个 jar 添加到您的类路径中。
  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 - 使用 Java 创建 Access 数据库文件(.mdb 或 .accdb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9543722/

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