gpt4 book ai didi

java - 如何使用 JDBC 连接一台服务器上的多个数据库?

转载 作者:可可西里 更新时间:2023-11-01 08:39:45 24 4
gpt4 key购买 nike

我试图在单个运行实例上访问多个数据库中的数据。这些数据库的表结构都是一样的;据我所知,使用 jdbc 创建一个新的连接是非常昂贵的。但是jdbc的连接字符串需要这样的格式jdbc:mysql://hostname/databaseName,需要指定具体的数据库。所以我想知道有没有办法使用一个连接查询多个数据库中的数据?

Multiple databases on a single running instance

最佳答案

MySQL 文档在这个主题上写得很糟糕。

SELECT Syntax页面指​​的是 JOIN Syntax有关如何编写表名的页面,即使您不使用 JOIN 子句。 JOIN Syntax页面仅显示 tbl_name,而没有进一步定义它是什么。底部甚至有一条评论指出这一点:

This page needs to make it explicit that a table reference can be of the form schema_name.tbl_name, and that joins between databases are therefore posible.

Schema Object Names页面没有提及限定名称,但确实有一个名为 Identifier Qualifiers 的子页面,表示可以使用语法 db_name.tbl_name.col_name 引用表列。该页面未提及使用 db_name.tbl_name 引用的能力。

但是,如果您可以使用 db_name.tbl_name.col_name 来引用一个,那么只有您还可以引用一个表<才有意义/em> 使用 db_name.tbl_name,这意味着您可以使用单个 Connection 访问所有您的数据库,如果您愿意的话限定 SQL 语句中的表名。


正如@MarkRotteveel 在评论中提到的,您还可以使用 Connection.setCatalog(String catalog) 切换数据库方法。

这记录在 MySQL Connector/J 5.1 Developer Guide 中:

Initial Database for Connection

If the database is not specified, the connection is made with no default database. In this case, either call the setCatalog() method on the Connection instance, or fully specify table names using the database name (that is, SELECT dbname.tablename.colname FROM dbname.tablename...) in your SQL. Opening a connection without specifying the database to use is generally only useful when building tools that work with multiple databases, such as GUI database managers.

Note: Always use the Connection.setCatalog() method to specify the desired database in JDBC applications, rather than the USE database statement.

关于java - 如何使用 JDBC 连接一台服务器上的多个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37893412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com