おそらく、JDBC接続オブジェクト自体からデータベース名を取得する最も簡単な方法は、getCatalog()
を使用することです。 方法:
ただし、Konstantinが以下のコメントで指摘しているように、USE dbname
を発行して現在のMySQLデータベースを変更しても、その値は変更されません。 声明。
getCatalog()
- データベースを変更しない、または
-
setCatalog()
を使用して「JDBCWay」を実行します 現在のデータベースを変更するには
ただし、MySQLの場合は、SELECT DATABASE()
を使用します 全体的に安全なようです。
getCatalog()
間のこの潜在的な不一致にも注意してください 実際の現在のデータベースは、特定のJDBCドライバーの動作によって異なります。好奇心から、SQLServer用のMicrosoftJDBC Driver4.0と.getCatalog()
に似たものを試しました。 USE dbname
を実行した直後に、現在のデータベースへの変更を実際に認識していました 声明。つまり、コード
String connectionUrl = "jdbc:sqlserver://localhost:52865;"
+ "databaseName=myDb;" + "integratedSecurity=true";
try (Connection con = DriverManager.getConnection(connectionUrl)) {
System.out.println(String.format(
"getCatalog() returns: %s",
con.getCatalog()));
try (Statement s = con.createStatement()) {
System.out.println(" Executing: USE master");
s.execute("USE master");
}
System.out.println(String.format(
"getCatalog() returns: %s",
con.getCatalog()));
} catch (Exception e) {
e.printStackTrace(System.out);
}
次の結果が得られました:
getCatalog() returns: myDb
Executing: USE master
getCatalog() returns: master