【问题标题】:Joining two databases in Java with mysql queries?用 mysql 查询在 Java 中加入两个数据库?
【发布时间】:2017-11-15 02:47:32
【问题描述】:

我正在尝试在 java 应用程序中运行 SQLquery。 sqlquery 连接两个数据库(不在同一台服务器上)。我在这里所做的是否正确:

公共功能有:

    private DatabaseData externaldb = new DatabaseData("com.mysql.jdbc.Driver",
 "...", "...", "...");
    private DatabaseData localdb = new DatabaseData("com.mysql.jdbc.Driver",
 "...", "...", "...");
    private Connection externalconnection = null;
    private Connection localconnection = null;

    function(externalconnection, c_id, u_d);

被调用的函数是:

private int function(Connection externalconnection, String c_Id, String u_Id) 
    throws SQLException{
                String query ="SELECT A.v_id, COUNT(I.v_id) AS v_count "
                        + "FROM externaldb.video_interaction I"
                        + " INNER JOIN localdb.video_additional A ON A.v_id = I.v_id"
                        + " WHERE I.c_id='" + c_id + "' AND I.user'" + u_Id +  "';";

                Statement stmt = externaldb.createStatement();
                ResultSet rs = stmt.executeQuery(query);

                int counter = 0;

                if (rs.next()){
                    counter = rs.getInt("video_count");
                }

                return counter;

            }

谢谢!

【问题讨论】:

  • 你试过上面的代码了吗?你遇到了什么问题。分享这些细节,否则我们帮不了你
  • 谢谢。我们仍在准备服务器。这就是为什么我目前没有反馈。
  • 遇到问题后再回来。否则我们也可以推测
  • 没有。您的查询是一个代表 SQL 查询的字符串,它将被传递给 MySQL 以在您用于运行该查询的任何连接上执行 - 查询本身不能引用另一个连接。在 Microsoft SQL Server 中,您可以设置链接服务器来执行此操作;我不确定 MySQL 是否有类似的东西。
  • 问我是否测试过,是的,但它不起作用。

标签: java mysql


【解决方案1】:

你有两个连接,你有两个数据库。服务器本地必须能够访问外部和外部到本地。然后,创建 FEDERATED 表,例如:

CREATE TABLE federated_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    name   VARCHAR(32) NOT NULL DEFAULT '',
    other  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name),
    INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';

(在 MySQL 5.0.13 之前,使用 COMMENT 而不是 CONNECTION。)

来源:MySQL Cross Server Select Query

更多信息:https://dev.mysql.com/doc/refman/5.7/en/federated-create-server.html

【讨论】:

  • 感谢您的回复。问题是我没有权限在外部服务器上创建表。
  • 您是否有权在内部服务器上创建表?
  • 在内部服务器上创建联合表。内部服务器将建立与外部服务器的外部连接,因此外部服务器必须在防火墙中允许“建立 TCP”。
猜你喜欢
  • 2012-12-19
  • 2013-05-18
  • 2011-06-09
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 2011-01-20
相关资源
最近更新 更多