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

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

我像这样连接到MySQL:

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

在一些操作之后,我想连接到同一连接上的不同mysql数据库。 我怎样才能做到这一点?

我试过用:

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

但这并没有改变要使用的数据库。

如MySQL文档中所述,您需要使用Connection.setCatalog()切换到另一个数据库。 它还明确表示您不应该执行USE 来切换。

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

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

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

您可以在表名上添加数据库名称前缀,如下所示。

例如: db1 has table1db2 has table2

 select * from db1.table1, db2.table2; 

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