一尘不染

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

mysql

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

我这样连接到MySQL:

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

经过一些操作后,我想在同一连接上连接到另一个mysql数据库。我怎样才能做到这一点?

我尝试使用:

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

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


阅读 586

收藏
2020-05-17

共1个答案

一尘不染

MySQL文档中所述,您需要Connection.setCatalog()用于切换到另一个数据库。这也明确地说,你应该
执行USE <databasename>切换。

发出此警告的原因是JDBC是数据库的通用接口,因此JDBC提供了用于大多数常见任务的方法,包括切换catalogs(或databases在MySQL中如此)。JDBC规范/
javadoc还明确指出,人们应该通过数据库特定的命令来使用API​​(如果两者均可用)。造成这种情况的原因有很多:1)它促进了与数据库无关的代码,2)驱动程序可能会在内部对API方法之一做出额外的响应。使用特定于数据库的命令可能会导致驱动程序出现异常,因为其内部状态与数据库状态不匹配。

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

调用setCatalog对先前创建或准备的Statement对象无效。它是限定的数据库管理系统是否准备操作立即发生在当执行Connection方法prepareStatementprepareCall调用。为了获得最大的可移植性,setCatalog应在Statement创建或准备a之前调用它。

2020-05-17