sql >> Database >  >> RDS >> Mysql

De verbonden mysql-databasenaam (JDBC) ophalen

Waarschijnlijk de meest eenvoudige manier om de databasenaam van het JDBC Connection-object zelf te krijgen, is via de getCatalog() methode:

Connection#getCatalog()

Echter, zoals Konstantin in zijn opmerking hieronder aangaf, zal die waarde niet veranderen als de huidige MySQL-database wordt gewijzigd door een USE dbname uit te geven. uitspraak.

getCatalog() kan nog steeds nuttig zijn in een toepassing die

  • verandert geen databases, of
  • doet dingen "The JDBC Way" met behulp van setCatalog() om de huidige database te wijzigen,

maar voor MySQL, met SELECT DATABASE() lijkt over het algemeen veiliger te zijn.

Merk ook op dat deze mogelijke discrepantie tussen getCatalog() en de daadwerkelijke huidige database hangt af van het gedrag van het specifieke JDBC-stuurprogramma. Uit nieuwsgierigheid heb ik iets soortgelijks geprobeerd met de Microsoft JDBC Driver 4.0 voor SQL Server en .getCatalog() was inderdaad op de hoogte van de wijziging in de huidige database onmiddellijk na het uitvoeren van een USE dbname uitspraak. Dat wil zeggen, de code

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);
}

leverde de volgende resultaten op:

getCatalog() returns: myDb
           Executing: USE master
getCatalog() returns: master


  1. Database voor zoeken in volledige tekst en 200 miljoen records

  2. Indexen gebruiken om de prestaties van MySQL-query's te verbeteren

  3. Veldgroottes voor grote tekens in SAS

  4. Laravel:dynamisch verbinding maken met databases