Java訪問數據庫


首先簡介一下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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM