1. 程式人生 > >一、通過Driver介面或者DriverManager管理類來連線資料庫

一、通過Driver介面或者DriverManager管理類來連線資料庫

一、通過driver介面連線資料庫

/**
	 * Driver 是一個介面: 資料庫廠商必須提供實現的介面. 能從其中獲取資料庫連線.
	 * 可以通過 Driver 的實現類物件獲取資料庫連線.
	 * 
	 * 1. 加入 mysql 驅動
	 * 1). 解壓 mysql-connector-java-5.1.7.zip
	 * 2). 在當前專案下新建 lib 目錄
	 * 3). 把 mysql-connector-java-5.1.7-bin.jar 複製到 lib 目錄下
	 * 4). 右鍵 build-path , add to buildpath 加入到類路徑下.s
	 * @throws SQLException 
	 */
	@Test
	public void testDriver() throws SQLException {
		//1. 建立一個 Driver 實現類的物件
		Driver driver = new com.mysql.cj.jdbc.Driver();
	
		//2. 準備連線資料庫的基本資訊: url, user, password
		String url = "
jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
";Properties info = new Properties();info.put("user", "root");info.put("password", "1230");//3. 呼叫 Driver 介面的 connect(url, info) 獲取資料庫連線Connection connection = driver.connect(url, info);System.out.println(connection);}

以上方式連線資料庫是最基本的方式,但是沒有一定的靈活性,所以可以用Properties類讀取properties檔案來進行解耦,以便通過更改配置檔案而不更改程式碼來進行與其他資料庫的連線

String driverClass = null;
		String jdbcUrl = null;
		String user = null;
		String password = null;
		
		//讀取類路徑下的 jdbc.properties 檔案
		InputStream in = 
				getClass().getClassLoader().getResourceAsStream("jdbc.properties");
		Properties properties = new Properties();
		properties.load(in);
		driverClass = properties.getProperty("driver");
		jdbcUrl = properties.getProperty("jdbcUrl");
		user = properties.getProperty("user");
		password = properties.getProperty("password");
		
		//通過反射常見 Driver 物件. 
		Driver driver = 
				(Driver) Class.forName(driverClass).newInstance();
		
		Properties info = new Properties();
		info.put("user", user);
		info.put("password", password);
		
		//通過 Driver 的 connect 方法獲取資料庫連線. 
		Connection connection = driver.connect(jdbcUrl, info);
		
		return connection;
	}

二、通過DriverManager管理類連線資料庫

/**
	 * DriverManager 是驅動的管理類. 
	 * 1). 可以通過過載的 getConnection() 方法獲取資料庫連線. 較為方便
	 * 2). 可以同時管理多個驅動程式: 若註冊了多個數據庫連線, 則呼叫 getConnection()
	 * 方法時傳入的引數不同, 即返回不同的資料庫連線。 
	 * @throws Exception 
	 */
	@Test
	public void testDriverManager() throws Exception{
		//1. 準備連線資料庫的 4 個字串. 
		//驅動的全類名.
		String driverClass = "com.mysql.cj.jdbc.Driver";
		//JDBC URL
		String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false";
		//user
		String user = "root";
		//password
		String password = "1230";
		
		//2. 載入資料庫驅動程式(對應的 Driver 實現類中有註冊驅動的靜態程式碼塊.)
		Class.forName(driverClass);
		
		//3. 通過 DriverManager 的 getConnection() 方法獲取資料庫連線. 
		Connection connection = 
				DriverManager.getConnection(jdbcUrl, user, password);
		System.out.println(connection); 
		
	}

通用性改寫

public Connection getConnection2() throws Exception{
		//1. 準備連線資料庫的 4 個字串. 
		//1). 建立 Properties 物件
		Properties properties = new Properties();
		
		//2). 獲取 jdbc.properties 對應的輸入流
		InputStream in = 
				this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
		
		//3). 載入 2) 對應的輸入流
		properties.load(in);
		
		//4). 具體決定 user, password 等4 個字串. 
		String user = properties.getProperty("user");
		String password = properties.getProperty("password");
		String jdbcUrl = properties.getProperty("jdbcUrl");
		String driver = properties.getProperty("driver");
		
		//2. 載入資料庫驅動程式(對應的 Driver 實現類中有註冊驅動的靜態程式碼塊.)
		Class.forName(driver);
		
		//3. 通過 DriverManager 的 getConnection() 方法獲取資料庫連線. 
		return DriverManager.getConnection(jdbcUrl, user, password);
	}

——————————————————————————————————————

附上jdbc.properties配置檔案的內容

#driver=oracle.jdbc.driver.OracleDriver
#jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#password=java

driver=com.mysql.cj.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
user=root
password=1230