Java之數據庫MYSQL、JDBC工具類、properties配置文件

數據庫


學習數據庫要明白兩個概念:數據庫和數據庫管理系統。

什麼是數據庫:

數據庫就是存儲數據的倉庫,數據按照特定的格式將數據存儲起來,用戶可以對數據庫中的數據進行增加、修改、刪除及查詢操作。

什麼是數據庫管理系統:

數據庫管理系統DBMS:是一種操作和管理數據庫的大型軟件,用於建立和維護使用數據庫,對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。用戶通過數據

庫管理系統訪問數據庫中表內的數據

常見的數據庫管理系統

MYSQL     :開源免費的數據庫,小型的數據庫.已經被Oracle收購了.MySQL6.x版本也開始收費。

Oracle      :收費的大型數據庫,Oracle公司的產品。Oracle收購SUN公司,收購MYSQL。

DB2          :IBM公司的數據庫產品,收費的。常應用在銀行系統中.

SQLServer:MicroSoft 公司收費的中型的數據庫。C#、.net等語言常使用。

SyBase      :已經淡出歷史舞臺。提供了一個非常專業數據建模的工具PowerDesigner。

SQLite       : 嵌入式的小型數據庫,應用在手機端。

Java相關的數據庫:MYSQLOracle


SQL語句:

數據庫不識別java語言,但可以識別SQL語言,是數據庫的代碼,結構化查詢語言SQL是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系

創建數據庫、創建數據表、向數據表中添加一條條數據信息均需要使用SQL語句。


JDBC數據庫連接:

Java程序需要連接到數據庫該怎麼辦呢?Sun公司寫了一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成,是

Java訪問數據庫的標準規範。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。

JDBC需要連接驅動,驅動是兩個設備要進行通信,滿足一定通信數據格式,數據格式由設備提供商規定,設備提供商爲設備提供驅動軟件,通過軟件可以與該設備進行通信。

使用的是mysql的驅動mysql-connector-java-5.1.39-bin.jar

JDBC原理:

數據庫管理系統有很多,需要制定統一的規範來管理訪問數據庫的一套標準,因此Java提供了一個規範稱爲JDBC,也就是一個接口,生產廠商要想訪問數據庫,必須提供規範

的實現類,則稱爲驅動,此驅動由生產廠商提供,驅動是接口的實現,沒有驅動將無法完成數據庫的連接,從而不能操作數據庫。



JDBC開發步驟:

1.        註冊驅動.

2.        獲得連接.

3.        獲得語句執行平臺

4.        執行sql語句

5.        處理結果

6.        釋放資源.


步驟詳解:

1.註冊驅動時需要導入使用哪個數據庫管理系統的驅動jar包,該jar包中存放的是驅動接口的實現類。首先創建lib目錄,用於存放當前項目需要的所有jar包。

JDBC規範定義了驅動接口爲:java.sql.Driver,接口類Driver,即每個驅動程序類必須實現的接口,MySql驅動包提供了實現類:com.mysql.jdbc.Driver

使用反射技術將驅動接口的實現類加載到內存中,該接口實現類即:com.mysql.jdbc.Driver中的靜態代碼將自動執行。

代碼:

Class.forName("com.mysql.jdbc.Driver");


2.獲得連接:需要用到DriverManager類中靜態方法getConnection完成對數據庫的連接,

static Connection getConnection(String url, String user, String password) //試圖建立到給定數據庫 URL 的連接。
三個參數分別表示,url 需要連接數據庫的位置(網址) user用戶名  password 密碼,該方法返回值返回一個Connection接口的實現類對象。

	String url = "jdbc:mysql://localhost:3306/mydatabase";
	String username = "root";
	String password = "12345678";
	Connection con = DriverManager.getConnection(url,username,password);

3.獲得語句執行平臺,通過與數據庫連接類對象獲取對SQL語句的執行者對象,執行SQL語句,Connection 對象的數據庫能夠提供描述其表、所支持的 SQL 語法、

存儲過程、此連接功能等等的信息。此方法:創建一個 Statement 對象來將 SQL 語句發送到數據庫。

如:

Statement createStatement() 
實例:

Statement stat = con.createStatement();

返回值的Statement接口實現類對象

4.執行SQL語句/通過執行者對象調用方法執行SQL語句,獲得結果

// int executeUpdate(String sql) 執行給定 SQL 語句,該語句可能爲 INSERT、UPDATE 或 DELETE 語句

//返回值int,是操作成功數據表多少行

執行select語句獲取結果集時:ResultSet executeQuery(String sql) 執行給定的 SQL 語句,該語句返回單個 ResultSet 對象。

如:

int row = stat.executeUpdate("INSERT INTO sort(sname,sprice,sdesc) VALUES ('家電',2000,'優惠的促銷')");


使用MYSQL數據庫管理系統完整的連接數據庫程序實例代碼:

public class JDBCdemo {

	public static void main(String[] args)throws SQLException, ClassNotFoundException{
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydatabase";
		String username = "root";
		String password = "12345678";
		Connection con = DriverManager.getConnection(url,username,password);
		System.out.println(con);
		Statement stat = con.createStatement();
		System.out.println(stat);
		int row = stat.executeUpdate("INSERT INTO sort(sname,sprice,sdesc) VALUES ('家電',2000,'優惠的促銷')");
		System.out.println(row);
		stat.close();
		con.close();
		
	}
}


JDBC工具類


當想實現對數據庫的增刪改查操作時,都需要做註冊驅動、獲得連接、獲得語句執行平臺、執行SQL語句、關閉資源的操作,這樣會有很多相同的代碼,可以編寫一個JDBC的

工具類,提供獲取連接對象的方法,從而降低代碼的重複率。

實例:

/*
 * 此類是JDBC的工具類,存放的是操作數據庫中註冊驅動和獲得連接的操作,以及關閉操作
 * 
 */
public class JDBCUtil {
	private static Connection con;
	
	public static Connection getConnection(){
		try{
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/mydatabase";
			String username = "root";
			String password = "12345678";
			con = DriverManager.getConnection(url,username,password);	
		}catch(Exception ex){
			throw new RuntimeException(ex+"數據庫連接失敗");
		}
		return con;
	}
	public static void close(Connection con,Statement stat , ResultSet rs){
		 if(rs!=null){
			 try{
				 rs.close();
			 }catch(SQLException ex){}
		 }
		 
		 if(stat!=null){
			 try{
				 stat.close();
			 }catch(SQLException ex){}
		 }
		 
		 if(con!=null){
			 try{
				 con.close();
			 }catch(SQLException ex){}
		 } 
	}
}

properties配置文件

開發中獲得連接的4個參數(驅動、URL、用戶名、密碼)通常都存在配置文件中,方便後期維護,程序如果需要更換數據庫,只需要修改配置文件即可。

通常情況下,我們習慣使用properties文件,此文件我們將做如下要求:

1.        文件位置:任意,建議src下

2.        文件名稱:任意,擴展名爲properties

3.        文件內容:一行一組數據,格式是“key=value”.

a)        key命名自定義,如果是多個單詞,習慣使用點分隔。例如:jdbc.driver

b)       value值不支持中文,如果需要使用非英文字符,將進行unicode轉換。


1.創建配置文件:database.properties

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydatabase
username=root
password=12345678

2.加載配置文件:JDBCUtilsConfig.java

/*
 *  編寫數據庫連接的工具類,JDBC工具類
 *  獲取連接對象採用讀取配置文件方式
 *  讀取文件獲取連接,執行一次,static{}
 */
public class JDBCUtilsConfig {
	private static Connection con ;
	private static String driverClass;
	private static String url;
	private static String username;
	private static String password;
	
	static{
		try{
			readConfig();
			Class.forName(driverClass);
			con = DriverManager.getConnection(url, username, password);
		}catch(Exception ex){
			throw new RuntimeException("數據庫連接失敗");
		}
	}
	
	private static void readConfig()throws Exception{
		InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
		 Properties pro = new Properties();
		 pro.load(in);
		 driverClass=pro.getProperty("driverClass");
		 url = pro.getProperty("url");
		 username = pro.getProperty("username");
		 password = pro.getProperty("password");
	}
	
	
	public static Connection getConnection(){
		return con;
	}
	
}


3.測試類 TestJDBCUtils.java

public class TestJDBCUtils {
	public static void main(String[] args) {
		Connection con = JDBCUtilsConfig.getConnection();
		System.out.println(con);
	}
}

結果:測試成功。





 








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