无法连接到共享驱动器上的数据库 - UCanAccess

时间:2015-08-04 16:40:24

标签: java jdbc ucanaccess

我已将我的应用程序设置为通过UCanAccess连接到Access数据库但是我无法连接到位于共享驱动器上的数据库。请参阅下面的示例。

String databasePath = "jdbc:ucanaccess://C:/Desktop/MyDB.accdb"  \\\\ this works
String databasePath = "jdbc:ucanaccess://servername/etc/MyDB.accdb" \\\\ does not work and throws no suitable driver found exception

当我将共享驱动器上的文件夹映射到某个字母时非常有趣,例如P: - 它成功连接。

String databasePath = "jdbc:ucanaccess://P:/servername/etc/MyDB.accdb"  \\\\ this works

有可能绕过这个吗?我的用户对该文件夹具有r / w权限,但我不想在每台计算机上映射驱动器。 感谢

2 个答案:

答案 0 :(得分:3)

您只是在连接网址中没有足够的正斜杠来表示UNC路径。如您所知,对于C:\Desktop\MyDB.accdb的本地连接,您可以使用

String databasePath = "jdbc:ucanaccess://C:/Desktop/MyDB.accdb";

同样,对于\\servername\etc\MyDB.accdb的UNC连接,您可以使用

String databasePath = "jdbc:ucanaccess:////servername/etc/MyDB.accdb";

答案 1 :(得分:0)

数据库驱动程序只能处理他指定的协议。 大多数jdbc驱动程序只能处理其特定数据库服务器的网络协议。

您正在使用访问jdbc驱动程序,该驱动程序只能处理对给定accdb文件的文件访问。

当您尝试使用以下网址时

  

JDBC:ucanaccess://servername/etc/MyDB.accdb

驱动程序使本地文件访问此路径,该路径不存在于localy中。 您期望的是,驱动程序将构成与您的服务器的SMB / CIFS连接,但他无法做到!

您必须将操作系统上的SMB / CIFS共享映射到本地驱动器盘符。因为操作系统正在处理网络SMB / CIFS的东西。 JDBC驱动程序可以像访问本地文件一样访问该文件。