1. 程式人生 > >IDEA建立的Gradle專案無法讀取jdbc.properties配置檔案

IDEA建立的Gradle專案無法讀取jdbc.properties配置檔案

一、首先建立jdbc.properties檔案,但是用gradle構建的專案目錄結構是如下樣式的

建立jdbc.properties方法:右鍵---new---Resource Bundle---輸入檔名即可建立properties配置檔案

其中jdbc.properties檔案中的內容如下:
userName=root
password=root
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mysql

二、用於操作JDBC的工具類

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    /**
     * 關閉相關的資源
     * @param conn
     * @param ps
     * @param rs
     */
    public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 關閉相關的資源
     * @param conn
     * @param ps
     */
    public static void close(Connection conn, PreparedStatement ps) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static Connection getConnection() throws Exception {
        //1.從配置檔案中讀取連線的基本資訊
        Properties pros = new Properties();
        // 預設載入的檔案就在src下
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
        pros.load(is);
        // 讀取4個基本資訊
        String userName = pros.getProperty("userName");
        String password = pros.getProperty("password");
        String driverClass = pros.getProperty("driverClass");
        String url = pros.getProperty("url");

        //2.載入驅動
        Class.forName(driverClass);

        //3.獲取連線
        Connection connection = DriverManager.getConnection(url + "?useUnicode=true&characterEncoding=utf8", userName, password);
        return connection;
    }
}

注:url 拼接 "?useUnicode=true&characterEncoding=utf8",是因為執行時出現的另一個關於編碼的問題,如果出現此問題,直接在連線的URL後加上?useUnicode=true&characterEncoding=utf8即可

三、已建立好jdbc.properties檔案,測試卻取不出值,出現如下錯誤:

此時很明顯是路徑不對,但是無論是將jdbc.properties檔案放在src根目錄還是main、Java目錄或者其他目錄下都是一樣的錯誤

四、解決方法:

因為getResourceAsStream在這種專案的目錄結構下對應的是resources目錄,若是沒有則需要自己手動建立

建立方法:放在main目錄上右鍵----new---Directory---resources,必須在mian下建立,與java目錄同一層級

建立完後將jdbc.properties拖至新建的resoures目錄下

注意新建的resources目錄圖示,確保新建的目錄如圖中一致,完成之後即可正常讀取配置檔案