Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj nazwę połączonej bazy danych mysql (JDBC)

Prawdopodobnie najprostszym sposobem uzyskania nazwy bazy danych z samego obiektu JDBC Connection jest użycie getCatalog() metoda:

Połączenie#getCatalog()

Jednak, jak zauważył Konstantin w swoim komentarzu poniżej, ta wartość nie zmieni się, jeśli bieżąca baza danych MySQL zostanie zmieniona przez wydanie USE dbname oświadczenie.

getCatalog() może być nadal przydatny w aplikacji, która

  • nie zmienia baz danych lub
  • robi rzeczy „The JDBC Way” za pomocą setCatalog() zmienić bieżącą bazę danych,

ale dla MySQL, używając SELECT DATABASE() wydaje się być ogólnie bezpieczniejszy.

Zauważ również, że ta potencjalna rozbieżność między getCatalog() a rzeczywista bieżąca baza danych zależy od zachowania konkretnego sterownika JDBC. Z ciekawości spróbowałem czegoś podobnego z Microsoft JDBC Driver 4.0 dla SQL Server i .getCatalog() rzeczywiście wiedział o zmianie w bieżącej bazie danych natychmiast po uruchomieniu USE dbname oświadczenie. czyli kod

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

dał następujące wyniki:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie dwóch tabel w repozytorium JPA

  2. Przełączanie awaryjne i powrót po awarii w Amazon RDS

  3. meta klucz i zapytanie meta_value w wordpressie

  4. Jak mogę zmienić indeksowany varchar (255) z utf8 na utf8mb4 i nadal pozostawać poniżej maksymalnej długości klucza 767?

  5. Wielokrotne przypisywanie tej samej wartości parametru w pdo execute