【问题标题】:Connecting Access Databases remotely?远程连接 Access 数据库?
【发布时间】:2013-05-22 05:45:21
【问题描述】:

目前我有一个 Java 应用程序可以执行我想要的所有操作和限制 其中是“它只驻留在它需要工作的本地机器上”。我的 Access 数据库位于远程服务器上,我在远程服务器上安装 Java 应用程序以使用连接字符串 jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=D:\\DATA\\DPPI\\DATA\\DPPI\\DPPIPR01.mdb; 连接数据库

它连接到 Access 数据库并使用它们执行所有业务逻辑。

增强(待完成):

  1. 使应用程序在线 - 不是一个大问题。
  2. 远程连接数据库 - 这是唯一的问题。

如果我使应用程序在线,则需要通过网络连接访问数据库(有点像 IP 或某个网址)。

问题:

但是经过这个Connect to Access database remotely之后,我的要求似乎无法完成。

如果我能够将数据库上传到在线虚拟主机服务器并仅从那里访问数据库,有什么办法吗?如果是,那么我应该如何进行连接,因为 Access 数据库通过提供包含驱动器号和所有内容的完全限定名称进行连接。

但我应该如何进一步操作,以便能够远程连接 mdb 数据库?

ADO 解决方案:

但是通过链接后:
http://webcheatsheet.com/ASP/access_connection_strings.php,看来我们可以进行远程访问数据库连接了。

ADO 的解决方案类似于:

connectionString="Provider=MS Remote; 远程服务器=http://your_remote_server_ip;" &_ "远程提供程序=Microsoft.Jet.OLEDB.4.0;数据源=c:\your_database_name.mdb"

我对如何连接 Access 数据库感到有点困惑。


我脑子里还有一个问题。 我正在使用 Type-1 驱动程序。 Type-4 驱动是否支持远程连接?

【问题讨论】:

  • 请正确格式化。不要对随机句子使用代码标记。
  • 你在哪里输入连接中的IP地址,将其从本地主机替换为数据库系统的IP地址
  • IP地址应该放在哪里也是我关心的问题!即使在执行此操作之后 connectionString="Provider=MS Remote; Remote Server=your_remote_server_ip;" &_ "Remote Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\your_database_name.mdb" 并放置远程 Ip。我收到异常说明“没有为 Provider=MS Remote 找到合适的驱动程序;...”

标签: java ms-access jdbc


【解决方案1】:

如果您的应用程序是服务器端应用程序(如 Web 应用程序)并且您的服务器操作系统是 Windows,那么理论上可以使用您的 Access 数据库。在这种情况下,Access 数据库是您的应用程序的本地数据库。在您的连接字符串中,您可以简单地使用服务器文件系统中 Access 数据库的路径。

但请记住,Access 是一个桌面数据库,并非将其用作服务器数据库。这可能会导致性能下降,甚至可能导致系统崩溃。此用例可能存在一些许可问题。

因此,即使可以将 Access 与服务器应用程序一起使用,强烈建议使用真正的服务器数据库,如 MySQL、MS SQL Server 等。即使是像 Apache Derby 或 H2 这样的嵌入式数据库也会更合适。

如果您的应用程序像胖客户端一样在客户端运行,那么您使用 Access 的唯一机会就是将其放在网络文件系统上,这样每个客户端都可以看到它。但这仅在 LAN 内有效。如果你不能把它放在网络文件系统上,那么你必须使用真正的服务器数据库。

【讨论】:

  • 我会尝试是否能够从在线服务器中引用数据库。我还发现 HXTT Access(hxtt.com/access.html),一个用于 MS Access 的商业类型 4 驱动程序,支持它。但是它的授权成本比较高。
【解决方案2】:

请勿将Provider=MS Remote (RDS) 用于新开发。这是MSDN文章的引述

Microsoft OLE DB Remoting Provider (ADO Service Provider)

重要

从 Windows 8 和 Windows Server 2012 开始,RDS 服务器组件不再包含在 Windows 操作系统中(有关详细信息,请参阅 Windows 8 和 Windows Server 2012 兼容性手册)。 RDS 客户端组件将在 Windows 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。使用 RDS 的应用程序应迁移到 WCF 数据服务。

正如其他人所建议的,您应该认真考虑为该特定应用程序使用不同的后端数据库。

【讨论】:

    【解决方案3】:

    如果我能够调用驻留在包含 Microsoft Access 数据库的服务器上的另一个 java 应用程序怎么办?您能否让我知道它是否可以成为解决方案,以便我将我的应用程序分为两部分:
    1. 在线 java 应用程序执行 2 件事:接受进来的请求并等待来自运行在包含 Microsoft Access 数据库的服务器上的另一个应用程序的响应。
    2. 安装在包含 Microsoft Access 数据库的服务器上的 Java 应用程序仅负责连接和返回 DTO(数据传输对象)或集合中的某种对象。

    所以,我希望服务器端程序处理与数据库的通信,客户端应用程序将与服务器应用程序通信。

    请让我知道我是否应该以这种方式继续。

    【讨论】:

      【解决方案4】:

      可以通过标记流量并将流量从服务器排队---到----远程站点---(QOS..服务质量)......两个站点将连接通过 VPN 方法减少不必要的跳数,这将改善延迟并增加安全性,因此服务器和远程站点在逻辑上就像它们在同一个网络 (LAN) 上一样

      问候,

      阿里热汗

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-05
        相关资源
        最近更新 更多