首先簡介一下JDBC:
JDBC:Java DataBase Connection.
JDBC:Java數據庫連接。它是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問.
它由一組用Java語言編寫的類和接口組成。
JDBC提供了一種基准,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序,同時,JDBC也是個商標名。
一、Java訪問數據庫的原理:
舉個例子來講:Oracle、SQLServer、MySQL、DB2等數據庫可以類比為“水廠”,Connection類比為“水廠放水到小區的閥門”,Statement類比為“小區放水到家中的閥門”,ResultSet類比為“家中放水的閥門”。
因此,當Java連接數據庫的時候,先要打開水廠的閥門(Connection),然后打開小區的閥門(Statement),接着打開家中的閥門(ResultSet),這樣水才能流到家中(數據庫才能與用戶端進行連接)。這之后,
才能使用水(JavaApp來操作結果集,進行增刪改查CRUD)。
同樣的,連接關閉的原則:“先開后關,后開先關”,也就是:先關家里的閥門,再關小區的閥門,最后關水廠的閥門。如果直接先關掉小區的閥門而不先關家里的閥門,那可能會影響到小區其他家庭的使用。
JDBC訪問數據庫的步驟:
1.加載數據庫驅動類
2.獲得數據庫連接
3.獲得數據庫操作句柄
4.獲得結果集(查詢)
5.處理結果集
6.關閉結果集
7.關閉操作句柄
8.關閉數據庫連接
二、導入數據庫驅動程序(MySQL為例)和JUnit單元測試類:
導入數據庫驅動程序的步驟:
工程名上點擊右鍵 -> Build Path -> Configure Build Path -> 在Libraries中,點擊Add External JARs -> 進入MySQL的解壓包里的mysql-connector-java-5.1.36-bin.jar。可以去MySQL官網下載,注意
之后可以在Window->Open Perspective->MyEclipse Database Explorer里 new一個新的MySQL Connector/J。(其它數據庫類似,也需導入各自的數據庫驅動程序)
導入JUnit的步驟:
工程名上點擊右鍵 -> Build Path -> Add Libraries -> 選擇JUnit,點擊Next -> 選擇JUnit 4,單擊Finish -> 導入成功。
這兩步完成之后,接下來就可以寫代碼了。
三、JDBC處理的步驟:
1.建表 / 建序列 / 初始化數據
(使用 PL/SQL Developer 工具完成)
Table:dept
2.實體類/POJO/JavaBean/封裝類
Class:Dept
3.導入 數據庫驅動程序 到工程
ojdbc6.jar (Oracle11g)
ojdbc14.jar (Oracle10g)
4.新建數據庫工具類:
4.1 獲取數據庫連接的方法
4.2 關閉數據庫連接的方法
5.新建dao類封裝對數據庫的所有操作 (增刪改查 - CRUD)
四,下面貼出代碼:使用實體類封裝數據庫表
實體類(pojo類):其作用是用來封裝表中的一條數據。(或:用來封裝類的屬性和方法)。
表中的一條記錄:對應於一個實體。
寫實體類:必須寫三部分:屬性、默認構造方法(無參構造方法)、setter和getter方法。其他方法:用到才寫,不用就不寫。
package com.gm.pojo; import java.io.Serializable; /** * 實體類(pojo類) * * @author XiangdongLee * */ public class Dept implements Serializable { private static final long serialVersionUID = 1L; private Integer deptno; private String dname; private String loc; public Dept() { super(); } public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } }
五,下面貼出代碼:創建數據庫工具類,來獲得數據庫連接與關閉數據庫連接(以MySQL為例,其它數據庫只需更改drivername,url)
package com.gm.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * DBUtil:數據庫工具類 * * @author XiangdongLee * */ public class DBUtil { /** * 獲得數據庫連接 * * @return */ public static Connection getConnection() { Connection conn = null; String driverName = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/dbmin"; String username = "scott"; String password = "tiger"; try { Class.forName(driverName); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { System.out.println("加載數據庫驅動出錯..."); e.printStackTrace(); } catch (SQLException e) { System.out.println("獲得數據庫連接出錯..."); e.printStackTrace(); } return conn; } /** * 關閉數據庫連接 * * @param conn * @param ps * @param rs */ public static void close(Connection conn, PreparedStatement ps, ResultSet rs) { // 關閉原則:先開后關,后開先關 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void main(String[] args) { System.out.println(getConnection()); } }
接下來就可以創建dao類,來封裝數據表的所有操作(增刪改查CRUD)