如何将当前数据库更改为另一个数据库?

2022-09-02 09:06:37

我有一个Java程序连接到MySQL数据库,如何在同一连接上将当前数据库更改为其他数据库?

我像这样连接到MySQL:

DriverManager.getConnection("jdbc:mysql://"+server+"/",log,pass);

经过一些操作后,我想在同一连接上连接到不同的mysql数据库。我该怎么做?

我试图使用:

Statement stat= con.createStatement();
ResultSet r=stat.executeQuery("use mysql"); 

但这不会改变要使用的数据库。


答案 1

MySQL文档中所述,您需要使用该文档才能切换到另一个数据库。它还明确指出,您不应执行 to 开关。Connection.setCatalog()USE <databasename>

此警告的原因是JDBC是数据库的通用接口,因此为大多数常见任务提供了方法,包括切换(或MySQL中的切换)。JDBC规范/javadoc还明确指出,人们应该使用API而不是数据库特定的命令(如果两者都可用)。造成这种情况的原因有以下几个:1)它提升了与数据库无关的代码,以及2)驱动程序可能会在内部执行其他操作以响应其中一个 API 方法。使用特定于数据库的命令可能会导致驱动程序行为异常,因为其内部状态与数据库状态不匹配。catalogsdatabases

setCatalog(String) 的调用不会影响现有语句,如 JDBC API 文档中所指定:

调用对以前创建或准备好的对象没有影响。它是在方法调用时立即执行 DBMS 准备操作还是调用时定义的实现。为了获得最大的可移植性,应在创建或准备 之前调用 。setCatalogStatementConnectionprepareStatementprepareCallsetCatalogStatement


答案 2

您可以像这样在表名上为数据库名称添加前缀。

例如:和db1 has table1db2 has table2

select * from db1.table1, db2.table2;

这将允许您执行跨数据库查询


推荐