Создайте файл базы данных Access (.mdb или .accdb) с использованием Java

В настоящее время у меня есть одно приложение, в котором я могу получить доступ к .mdb или .accdb файл с JdbcOdbcDriver, чтобы добавить некоторые данные.

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

но здесь мне нужно настроить системный DSN. Нам нужно добавить новый источник данных (драйвер Microsoft Access), а затем указать местоположение файла .mdb. Только тогда приведенный выше код будет работать.

Предположим, я хочу запустить свое приложение в другой системе, тогда мне нужно сделать то же самое на этом компьютере. Если я даю свое приложение клиенту, и он / она не знает, как настроить файл .mdb. Тогда все мои усилия пропадут даром. Таким образом, доступен любой драйвер, с помощью которого я создаю файл .mdb с помощью своего Java-кода, а затем добавляю все данные в таблицу файла .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 и таблицу перед запуском этого кода.

5
задан Gord Thompson 10 October 2014 в 15:11
поделиться