Probabilmente il modo più semplice per ottenere il nome del database da JDBC oggetto di connessione stessa è tramite il metodo getCatalog()
:
Connection#getCatalog()
Tuttavia, come Konstantin ha sottolineato nel suo commento bel ow, quel valore non cambierà se l'attuale database MySQL viene modificato emettendo un'istruzione USE dbname
.
getCatalog()
potrebbe ancora essere utile in un'applicazione che
- non cambia i database, o
- fa le cose "la via JDBC" utilizzando
setCatalog()
per modificare il database corrente,
ma per MySQL, usare SELECT DATABASE()
sembra essere più sicuro in generale.
Si noti inoltre che questa discrepanza potenziale tra getCatalog()
e il database attuale corrente dipende dal comportamento del particolare driver JDBC. Per curiosità ho provato qualcosa di simile con Microsoft JDBC Driver 4.0 per SQL Server e .getCatalog()
era effettivamente a conoscenza della modifica al database corrente subito dopo aver eseguito un'istruzione USE dbname
. Cioè, il codice
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);
}
prodotto i seguenti risultati:
getCatalog() returns: myDb
Executing: USE master
getCatalog() returns: master
fonte
2014-10-18 16:01:18
possibile duplicato di http://stackoverflow.com/questions/5718952/how-to-get-database-url-from- java-sql-connection – SMA
@almasshaikh "Come ottenere l'url del database da java.sql.Connection?" non può mai essere uguale al nome del database – Paullo
idea è da url puoi ottenere il nome del database? – SMA