CONMISANMA的正確答案——不太嚴謹的JDBC獲取數據庫名操作

測試環境:win10

JDK版本:1.7.0_80

測試工具:NetBeans

package javaapplication2;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;

public class JavaApplication2 {

    /**
     * @param args the command line arguments
     * @throws java.lang.Exception
     */
    public static void main(String[] args) throws Exception {
        JavaApplication2 j2 = new JavaApplication2();
        Class.forName("com.mysql.jdbc.Driver");
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true", "root", "root");) {
            DatabaseMetaData databaseMetaData1 = connection.getMetaData();
            String url = databaseMetaData1.getURL();

            System.out.println(j2.getDataBaseName(url));
        }

    }

    /**
     * 通過鏈接地址獲取數據庫名
     *
     * @param url 鏈接地址
     * @return 數據庫名
     */
    public String getDataBaseName(String url) {
        String urlAfterTreatment = url;

        //判斷是否有問號
        if (url.indexOf("?") != -1) {
            urlAfterTreatment = urlAfterTreatment.substring(0, urlAfterTreatment.indexOf("?"));
        }

        //判斷是否有冒號
        if (urlAfterTreatment.split(":").length > 1) {
            String[] urlAfterTreatments = urlAfterTreatment.split(":");
            urlAfterTreatment = urlAfterTreatments[urlAfterTreatments.length - 1];
        }

        //判斷是否有斜杆
        if (urlAfterTreatment.split("/").length > 1) {
            String[] urlAfterTreatments = urlAfterTreatment.split("/");
            urlAfterTreatment = urlAfterTreatments[urlAfterTreatments.length - 1];
        }

        //判斷是否有等號(解決sqlserver的情況:jdbc:sqlserver://127.0.0.1:1433;databaseName=Mytest)
        if (urlAfterTreatment.split("=").length > 1) {
            String[] urlAfterTreatments = urlAfterTreatment.split("=");
            urlAfterTreatment = urlAfterTreatments[urlAfterTreatments.length - 1];
        }

        return urlAfterTreatment;
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章