JDBC:可以在java中执行多数据库查询吗?

时间:2014-02-23 13:30:58

标签: java mysql sql jdbc multi-database

我想使用java

在2个数据库上执行sql-query

但是在没有自己写一切的情况下找到如何做的一些问题

也许有人知道该怎么做。

示例:

database1
table1(names): id,Name,zip,something

database2
table2(towns): id,townname,zip
SELECT * 
FROM database1.names, database2.towns
WHERE database1.names.zip = database2.towns.zip

当我使用phpMyAdmin并且用户拥有两个数据库的权限时,该示例在mysql中起作用

编辑:

问题是:我如何让Java执行这样的查询,因为我只能连接到一个数据库(?) 或者:如何连接到2个执行使用java的两个数据库中的表的Sql Query的数据库。

我在java中执行sql命令的方式如下:

Connection c = DriverManager.getConnection("jdbc:mysql://localhost/database?user=root&password=");
PreparedStatement pstmt = c.prepareStatement("Select * from something");
pstmt.executeQuery();

但是我不能用它来获得一个使用来自2个数据库的表的SQL查询?

1 个答案:

答案 0 :(得分:0)

假设这些数据库在同一数据源中不可见,您必须使用中介软件对其进行查询,例如http://www.unityjdbc.com/doc/multiple/multiplequery.php

这不是一个小问题,因为您的“SQL”必须处理每个数据源的可用性和事务。

某些数据库供应商提供某种dblink(例如http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm),可以帮助您处理异构数据库。

如果您将问题缩小到您感兴趣的DBMS,那将会很好。