我正在尝试在 java 应用程序中运行 SQLquery。 sqlquery 连接两个数据库(不在同一服务器上)。我在这里所做的是否正确:
公共(public)函数有:
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;
}
谢谢!
最佳答案
您有两个连接,您有两个数据库。服务器本地必须能够访问外部,外部也必须能够访问本地。然后,创建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
关于java - 在 Java 中使用 mysql 查询连接两个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44519538/