我有一个Java程序连接到MySQL数据库,我怎么可以将当前的数据库更改为相同的连接上不同的一个?
我连接到MySQL这样的:
DriverManager.getConnection("jdbc:mysql://"+server+"/",log,pass);
一些操作后,我想连接到一个不同的MySQL数据库在同一连接上。 我怎样才能做到这一点?
我试着使用:
Statement stat= con.createStatement();
ResultSet r=stat.executeQuery("use mysql");
但是,这并不改变所使用的数据库。
随着中描述MySQL文档 ,你需要使用Connection.setCatalog()
切换到另一个数据库。 这也明确地说,你不应该执行一个USE <databasename>
切换。
这样做的原因警告是,JDBC是一个通用接口,数据库,并为此提供了最常见的任务,包括交换方法catalogs
(或databases
因为它们是在MySQL)。 JDBC规范/ javadoc中也明确说,人们应该使用API对数据库的特定命令(如果两者都可用)。 有几个方面的原因:1)它可以促进与数据库无关的代码,以及2)驱动程序可能会响应的API方法之一在内部做更多的事情。 使用数据库特定的命令可能会导致司机无法正常运作,因为它的内部状态不数据库状态相匹配。
要在通话setCatalog(String)
将不会影响现有的语句,如JDBC API文档中规定:
调用setCatalog
对先前创建或准备没有影响Statement
的对象。 它是限定的数据库管理系统是否准备操作立即发生在当实施Connection
方法prepareStatement
或prepareCall
被调用。 为了最大的可移植性, setCatalog
一个前应该叫Statement
创建或准备。
你可以在你这样的表名前缀的数据库名称。
例如: db1 has table1
和db2 has table2
select * from db1.table1, db2.table2;
这将允许你做跨数据库查询