程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 使用JDBC連接MySQL數據庫--典型案例分析(二)--封裝數據庫的連接與關閉

使用JDBC連接MySQL數據庫--典型案例分析(二)--封裝數據庫的連接與關閉

編輯:MySQL綜合教程

使用JDBC連接MySQL數據庫--典型案例分析(二)--封裝數據庫的連接與關閉


在第一節中,我們已經基本實現了使用Myeclipse和Mysql數據庫的連接,並且查詢了員工的一些信息。但是上次的實現多多少少有不完美之處,這次進行進一步優化。

這次:將數據庫的連接獲取和關閉封裝到DBUtility類中,並重構之前的案例,使用DBUtility類獲取和關閉連接。

步驟

封裝數據庫連接的獲取和關閉的過程如下:

1.創建屬性db.properties,在該文件中以鍵值對的形式來存儲連接數據庫的相關信息。該文件的內容如下:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://127.0.0.1:3306/emp

jdbc.user=wonderq

jdbc.password=root

這樣做的目的是當需要修改連接數據的信息時,只需修改該文件集合,降低了連接數據庫的信息與使用類之間的耦合。

2.創建DBUtility類,使用static塊,初始化連接數據的信息,代碼如下:

	static {
			try{
				//加載配置文件
	properties.load(DBUtility.class.getClassLoader().getResourceAsStream("Emp/src/dao/db.properties"));
	driver=properties.getProperty("jdbc.driver");
	url=properties.getProperty("jdbc.url");
	user=properties.getProperty("jdbc.user");
	pwd=properties.getProperty("jdbc.password");
	Class.forName(driver);//加載驅動類
			}
			catch (Exception e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
其中,
"Emp/src/dao/db.properties"
表示文件db.properties所在的包路徑,可以按照你自己工程的包路徑來寫代碼。

3.創建打開和關閉連接數據庫的方法,代碼如下:

public static Connection openConnection() throws SQLException{
			return DriverManager.getConnection(url,user,pwd);
		}
	public static void closeConnection(Connection con){
		if(con!=null){
			try {
				con.close();
			} catch (SQLException e) {
				System.out.println("關閉數據庫時發生異常!");
			}
		}
	}
4.重構EmpDAO類,使用DBUtility類獲取連接和關閉連接。
重構EmpDAO類,在該類中使用DBUtility類的openconnection獲取連接,使用closeConnection方法關閉連接,代碼如下所示:

package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class EmpDAO {
	public static void main(String [] args){
		EmpDAO dao=new EmpDAO();
		dao.findAll();
	}
	public void findAll(){
		Connection con=null;
		Statement stmt=null;
		ResultSet rs=null;
		
		try {
			con=DBUtility.openConnection();
			stmt=con.createStatement();
			rs=stmt.executeQuery("select empno,ename,sal,hiredate from emp;");
			while(rs.next()){
				System.out.println(rs.getInt("empno")+","+rs.getString("ename")+","+rs.getDouble("sal")+","+rs.getDate("hiredate"));
			}
		} catch (SQLException e) {
			System.out.println("數據庫訪問異常!");
			throw new RuntimeException(e);
		}
		finally{
			try {
				if(rs!=null){
						rs.close();
					}
					if(stmt!=null){
						stmt.close();
					}
			} catch (SQLException e) {
				System.out.println("釋放資源時發生異常!");
			}
			DBUtility.closeConnection(con);
		}
	}
}

運行類EmpDAO,輸出結果與之前相同:


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved