【问题标题】:Connecting system with any http site's database through my desktop application通过我的桌面应用程序将系统与任何 http 站点的数据库连接起来
【发布时间】:2017-07-26 21:02:53
【问题描述】:

假设,我有一个网站供学校收集学生信息和数据。我的网站有一个 MySQL 数据库。那么我或我的桌面应用程序如何从我网站的数据库中获取这些数据?基本上,当我使用 MySQL 时我的桌面应用程序我编写了一些代码来连接我的本地 MySQL 数据库,如下所示。

public settingdatabase(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con=DriverManager.getConnection("jdbc:mysql://localhost:3306/rgacd","root", "");
        stat = con.createStatement();
    }catch(Exception ex){
        System.out.println("Error: "+ex);

    }
}

但是当我尝试通过我的桌面应用程序连接任何 HTTP 站点的数据库时,我应该怎么做。 提前致谢。 :D

【问题讨论】:

  • “任何 HTTP 站点的数据库”是什么意思?
  • 假设我的站点名称是 apece.000webhostapp.com,我想通过桌面应用程序连接到该站点的数据库。
  • 您需要知道数据库的IP地址(或主机名),而不是Web服务器。

标签: java mysql database javafx


【解决方案1】:

通常会涉及防火墙。许多运行 Web 服务器的网络只接受传入的 http/https 连接(端口 80 和 443)。其他端口(如连接mysql数据库的3306)对外关闭。该站点的 Web 服务器通常连接到具有访问内部数据库的网络权限的应用程序服务器(例如 Tomcat)。

因此,简单的答案通常是您无法直接连接到支持任意网站的数据库,因为您无权访问它。

这是一个由 Tivoli 和 IBM 幻灯片提供的有点典型的架构:

根据设计,在大多数情况下,防火墙外的用户根本无法直接访问 RDBMS。

现在,在防火墙允许开放端口从任何外部机器连接到数据库的特殊情况下,您可以通过 jdbc 网络连接连接到机器(与通过以下方式访问数据库相同)本地主机:3306)。要建立这样的连接,您需要使用数据库机器的公开可用地址(可能与用于 http 连接的地址相同,也可能不同,具体取决于系统的网络配置)。

【讨论】:

    猜你喜欢
    • 2011-10-10
    • 2013-05-08
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多