Java 之 JDBC
JDBC
是用於在 Java
語言程式設計中與資料庫連線的 API
. JDBC
是一個規範,它提供了一整套介面,允許以一種可移植的訪問底層資料庫 API
。使用 JDBC驅動程式
來訪問資料庫,並用於儲存資料到資料庫中.



解釋上面兩幅圖:
java應用程式通過JDBC API首先連線到JDBC Driver,這些JDBC驅動器都是由各大資料庫廠家針對JDBC提供的,我們可以在網上下載jar包來使用,然後通過JDBC驅動器就能連線到我們的資料庫了。
第一步 新增驅動
1.在專案當中建立一個資料夾為lib 2.把Mysql驅動包複製到該資料夾下 3.builder path 編譯路徑 複製程式碼
第二步 連線到資料庫
package con.meils.jdbc.conn; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionClass { public static void main(String[] args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub // 1、載入驅動 // 把com.mysql.jdbc.Driver這份位元組碼載入進JVM // 當一份位元組碼載入進JVM的時候,就會執行位元組碼檔案中的靜態程式碼塊 // 這裡載入該位元組碼之後會例項化一個驅動器 Class.forName("com.mysql.jdbc.Driver"); // 2、連線 String url = "jdbc:mysql://localhost:3306/mytest"; String username = "root"; String password = "zjj19970517"; Connection connection = DriverManager.getConnection(url, username, password); // 3、驗證連線 System.out.println(connection); // 如果有輸出,表明連線成功 } } 複製程式碼
第三步 操作資料庫建立表
package con.meils.jdbc.ddl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class CreateTable { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub // 1\載入驅動 // 把com.mysql.jdbc.Driver這份位元組碼載入進JVM // 當一份位元組碼載入進JVM的時候,就會執行位元組碼檔案中的靜態程式碼塊 // 這裡載入該位元組碼之後會例項化一個驅動器 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/jdbc_db"; String username = "root"; String password = "zjj19970517"; // 2\ 連線資料庫 Connection connection = DriverManager.getConnection(url, username, password); // 3\建立sql語句 String sql = "create table stu (id int , name varchar(20), age int)"; // 4\執行sql語句 Statement st = connection.createStatement(); int row = st.executeUpdate(sql); // 5\釋放 st.close(); connection.close(); } } 複製程式碼

為什麼要釋放資源呢?

第四步 插入資料
package con.meils.jdbc.dml; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class InsertClass { public static void main(String[] args) { // TODO Auto-generated method stub // ================ 插入資料 ================ Connection conn = null; Statement st = null; try { // 1、載入驅動 Class.forName("com.mysql.jdbc.Driver"); // 2、建立連線 String url = "jdbc:mysql://localhost:3306/mytest"; String user = "root"; String password = "zjj19970517"; conn = DriverManager.getConnection(url, user, password); // 3、建立sql語句 String sql = "insert into stu values(1, 'zjj', 20)"; st = conn.createStatement(); // 4、執行語句 int row = st.executeUpdate(sql); System.out.println(row); }catch (Exception e) { e.printStackTrace(); } finally { // 5、釋放 if(st!=null) { try { st.close(); }catch (Exception e) { e.printStackTrace(); } } if(conn!=null) { try { conn.close(); }catch (Exception e) { e.printStackTrace(); } } } } } 複製程式碼
第五步 查詢操作

package con.meils.jdbc.dql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class QueryClass { public static void main(String[] args) throws SQLException, ClassNotFoundException { // TODO Auto-generated method stub // ================ 查詢資料 ================ // 1\載入驅動 // 把com.mysql.jdbc.Driver這份位元組碼載入進JVM // 當一份位元組碼載入進JVM的時候,就會執行位元組碼檔案中的靜態程式碼塊 // 這裡載入該位元組碼之後會例項化一個驅動器 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mytest"; String username = "root"; String password = "zjj19970517"; // 2\ 連線資料庫 Connection connection = DriverManager.getConnection(url, username, password); // 3\建立sql語句 String sql = "select count(*) as total from stu"; // 查詢一共有幾行資料 // 4\執行sql語句 Statement st = connection.createStatement(); ResultSet rs = st.executeQuery(sql); if(rs.next()) { int count = rs.getInt("total"); System.out.println(count); // 1 } // 5\釋放 st.close(); connection.close(); } } 複製程式碼



資料型別對照表:

上面我們基本學會了如何與資料庫打交道,但是這樣使用存在許多的弊端,比如:每一步操作都進行一次資料庫連線,造成浪費,所以我們在實際中要使用DAO思想來處理。
二、DAO設計
1、什麼是DAO

DAO(Data Access Object)資料儲存物件,介於業務邏輯層和持久層之間,實現持久化資料訪問。
不使用DAO的時候:

使用DAO的情況:

三、ORM對映關係

四、Domain
1、認識domain

2、domain類

3、儲存資料

4、獲取資料

五、DAO設計規範

案例
我們可以編寫一個DAO介面,定義了常用的資料庫操作方法,這時候我們同時會連線多個數據庫,比如是mysql 和 oracle ,我們可以分別實現oracleDao和mysqlDao兩個類,不同類裡面定義不同的操作資料庫的程式碼,實現的功能確實相同的。

所以面向介面程式設計是很重要的,也是一個很好的方式。