我有一个到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
setCataloghas no effect on previously created or preparedStatementobjects. It is implementation defined whether a DBMS prepare operation takes place immediately when theConnectionmethodprepareStatementorprepareCallis invoked. For maximum portability,setCatalogshould be called before aStatementis created or prepared.
您可以像这样在表名上添加数据库名称前缀。
例如:db1 has table1和db2 has table2
select * from db1.table1, db2.table2;
Run Code Online (Sandbox Code Playgroud)
这将允许您进行跨数据库查询
| 归档时间: |
|
| 查看次数: |
15373 次 |
| 最近记录: |