我创建在Java桌面应用程序(RCP插件),我使用的MS Access数据库对我的申请。
我一直在一些共享位置的数据库文件,但每当我尝试从不同的机器打开它,它抛出异常,说数据库已被其他人锁定。 请让我知道如何解决这个问题。
有没有办法共享使用JDBC连接不同的机器之间的MS Access数据库文件?
我创建在Java桌面应用程序(RCP插件),我使用的MS Access数据库对我的申请。
我一直在一些共享位置的数据库文件,但每当我尝试从不同的机器打开它,它抛出异常,说数据库已被其他人锁定。 请让我知道如何解决这个问题。
有没有办法共享使用JDBC连接不同的机器之间的MS Access数据库文件?
号这就像给你的车几个人,他们都希望在同一时间驱动:不会的原因很多工作。
解决方法:
使用MySQL或H2实际的数据库。
创建其中谈到到Access数据库中的Java服务器。 让所有的其它程序跟这个服务器。
注意:当您使用方法#2“其他节目”你不能使用JDBC。 你必须写自己的协议。
如果应用程序其实使用JDBC-ODBC桥(由建议的JDBC-ODBC对您的问题标签)和Microsoft Access ODBC驱动程序则是 ,并发用户数量适中,应该可以使用Java应用程序的工作在共享的Access数据库。
在你的问题中描述的行为的最常见的原因是在Access数据库文件(.ACCDB或.mdb)中所在的文件夹的权限不够。 访问使用“锁定文件”(.laccdb或.LDB)来管理多个并发用户,以便所有用户都必须在文件夹上“变”的权限,使他们能够创建和/或更新锁文件。
例如,如果你的共享访问数据库驻留在服务器共享映射到Z:为所有用户驱动器和Java代码看起来是这样的...
// (Note: Only for Java 7 or earlier.)
String url = "jdbc:odbc:" +
"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
"DBQ=Z:/test/myTest.mdb;";
try (Connection conn = DriverManager.getConnection(url)) {
// do useful stuff here
} catch (Exception e) {
e.printStackTrace(System.err);
}
...那么你需要确保所有用户对“Z:\测试”,“变更”权限的文件夹。
如需更详细的解释见我对方的回答在这里 。
我相信有一些设置,你可以在MS Access多用户的选择做。 请按照下列步骤。 开放的MS Access(2016),导航到文件>选项>客户端设置>滚动到高级 -
默认打开模式:共享; 默认记录锁定:无锁;