Ответ 1
Как описано в документации MySQL, вам нужно использовать Connection.setCatalog()
для переключения на другую базу данных. Он также явно говорит, что вы должны не выполнить USE <databasename>
для переключения.
Причиной этого предупреждения является то, что JDBC является общим интерфейсом к базам данных и поэтому предоставляет методы для большинства распространенных задач, включая переключение catalogs
(или databases
, как и в MySQL). Спецификация JDBC/javadoc также явно говорит о том, что люди должны использовать API для конкретных команд базы данных (если они доступны). Для этого есть несколько причин: 1) он продвигает независимый от базы данных код и 2) драйвер может делать дополнительные вещи внутренне в ответ на один из методов API. Использование команд, специфичных для базы данных, может привести к неверному функционированию драйвера, поскольку его внутреннее состояние не соответствует состоянию базы данных.
Вызов setCatalog(String)
не будет влиять на существующие операторы, как указано в документации API JDBC:
Вызов
setCatalog
не влияет на ранее созданные или подготовленные объектыStatement
. Реализация определяется, выполняется ли операция подготовки СУБД немедленно, когда вызывается методConnection
prepareStatement
илиprepareCall
. Для максимальной переносимостиsetCatalog
следует вызвать до создания или подготовкиStatement
.