【发布时间】:2012-03-21 13:43:10
【问题描述】:
目前我有一个可以访问 .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文件并能够访问这个数据库文件。
我尝试了这段代码,它在不配置系统 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 文件和表时工作。
【问题讨论】:
标签: java database ms-access driver