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

Krz*_*iek 19 java mysql jdbc

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

我像这样连接到MySQL:

DriverManager.getConnection("jdbc:mysql://"+server+"/",log,pass);
Run Code Online (Sandbox Code Playgroud)

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

我试着用:

Statement stat= con.createStatement();
ResultSet r=stat.executeQuery("use mysql"); 
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*eel 31

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

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

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

Calling setCatalog has no effect on previously created or prepared Statement objects. It is implementation defined whether a DBMS prepare operation takes place immediately when the Connection method prepareStatement or prepareCall is invoked. For maximum portability, setCatalog should be called before a Statement is created or prepared.


ssk*_*ssk 5

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

例如:db1 has table1db2 has table2

select * from db1.table1, db2.table2;
Run Code Online (Sandbox Code Playgroud)

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