JDBC連接數據庫查詢信息的步驟(提取成配置文件方式)


硬編碼格式的弊端:數據庫發生改變時,要重新修改代碼,重新編譯和部署

解決方法:將數據庫信息寫在配置文件當中,讓程序通過讀取配置文件來獲得這些信息

jdbc.driver.class=com.mysql.jdbc.Driver
jdbc.connection.url=jdbc:mysql://127.0.0.1:3306/tree
jdbc.connection.username=root
jdbc.connection.password=123321

編寫配置文件database.properties
創建包com.pb.tree.util,編寫類ConfigManager 讀取屬性文件

package cn.tree.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

//讀取配置文件的工具類-單例模式
public class ConfigManager {
// 讀取配置文件properties.load(inputstream)

private static ConfigManager configManager;
private static Properties properties;

private ConfigManager() {
String configFile = "database.properties";
properties = new Properties();
InputStream is = ConfigManager.class.getClassLoader()
.getResourceAsStream(configFile);

try {
properties.load(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public static ConfigManager getInstance() {
if (configManager == null) {
configManager = new ConfigManager();
}
return configManager;
}

public String getString(String key) {
return properties.getProperty(key);
}

}



修改MenuDao類的查詢信息的方法

package cn.tree.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

//讀取配置文件的工具類-單例模式
public class ConfigManager {
	// 讀取配置文件properties.load(inputstream)

	private static ConfigManager configManager;
	private static Properties properties;

	private ConfigManager() {
		String configFile = "database.properties";
		properties = new Properties();
		InputStream is = ConfigManager.class.getClassLoader()
				.getResourceAsStream(configFile);

		try {
			properties.load(is);
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static ConfigManager getInstance() {
		if (configManager == null) {
			configManager = new ConfigManager();
		}
		return configManager;
	}

	public String getString(String key) {
		return properties.getProperty(key);
	}

}

  

package cn.tree.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import cn.tree.util.ConfigManager;

public class MenuDao {

	// 查詢主目錄
	public void getMainList() {
		Connection connection = null;
		Statement st = null;
		ResultSet rs = null;
		String driver = ConfigManager.getInstance().getString(
				"jdbc.driver.class");
		String url = ConfigManager.getInstance().getString(
				"jdbc.connection.url");
		String username = ConfigManager.getInstance().getString(
				"jdbc.connection.username");
		String password = ConfigManager.getInstance().getString(
				"jdbc.connection.password");

		try {
			// 1、加載驅動
			Class.forName(driver);
			// 2、獲取數據庫連接
			connection = DriverManager.getConnection(url, username, password);
			// 3、獲取Statement對象,執行sql語句
			String sql = "select * from main";
			st = connection.createStatement();
			rs = st.executeQuery(sql);
			// 4、處理sql執行結果
			while (rs.next()) {
				int id = rs.getInt("id");
				String name = rs.getString("name");
				System.out.println("id: " + id + "\t" + "name: " + name);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				// 5、釋放資源
				rs.close();
				st.close();
				connection.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		MenuDao menuDao = new MenuDao();
		menuDao.getMainList();
	}
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM