sql >> データベース >  >> RDS >> Mysql

接続されたmysqlデータベース名(JDBC)を取得します

    おそらく、JDBC接続オブジェクト自体からデータベース名を取得する最も簡単な方法は、getCatalog()を使用することです。 方法:

    Connection#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
    


    1. PHPデータベースforeach()に無効な引数が指定されました

    2. PHPを介したphpMyAdmin列のエコーjson配列

    3. ユーザー名でLaravelのユーザーを検索

    4. Android-JobSchedulerのsetPeriodicは機能しません