如MySQL文档中所述,您需要
Connection.setCatalog()用于切换到另一个数据库。这也明确地说,你应该 不
执行
USE <databasename>切换。
发出此警告的原因是JDBC是数据库的通用接口,因此JDBC提供了用于大多数常见任务的方法,包括切换
catalogs(或
databases在MySQL中如此)。JDBC规范/
javadoc还明确指出,人们应该通过数据库特定的命令来使用API(如果两者均可用)。造成这种情况的原因有很多:1)它促进了与数据库无关的代码,2)驱动程序可能会在内部对API方法之一做出额外的响应。使用特定于数据库的命令可能会导致驱动程序出现异常,因为其内部状态与数据库状态不匹配。
调用
setCatalog(String)不会影响现有语句,如JDBC API文档中所指定:
调用
setCatalog对先前创建或准备的Statement对象无效。它是限定的数据库管理系统是否准备操作立即发生在当执行Connection方法prepareStatement或prepareCall调用。为了获得最大的可移植性,setCatalog应在Statement创建或准备a之前调用它。



