JDBC快速入門

JDBC概念和快速入門案例

1、JDBC的概念:

通過Java代碼操作數據庫(增,刪,改,查)

2、快速入門操作步驟:

A.導入jar包

B.註冊驅動  
Class.forName("com.mysql.jdbc.Driver");

C.獲取驅動
String url = "jdbc:mysql://127.0.0.1:3306/ee";  //ee是數據庫的名稱
Connection conn = DriverManager.getConnection(url, "root", "123");

D.獲取操作對象  
Statement stat = conn.createStatement();

E.操作SQL     
int num = stat.executeUpdate(sql);

F.釋放資源
stat.close();
conn.close();

JDBC各個類的詳細介紹

1、DriverManager 驅動管理者

註冊驅動
註冊驅動的代碼 Class.forName("com.mysql.jdbc.Driver");

Connection 連接數據庫

A.獲取執行數據庫的對      
    Statement stat = conn.createStatement();
獲取預置語句執行數據庫對象 
    PrepareStatement ps = conn.prepareStatement(sql語句);
B.管理事務
a.開啓事務 
    conn.setAutoCommit(false); //false設置爲手動提交事務.true設置爲自動提交
b.提交事務 
    conn.commit();
c.回滾事務 
    conn.rollback();

Statement 操作數據庫

A.更新操作(DML"對錶記錄的增刪改"和DDL"對錶和庫的增刪改") 
int num = stat.executeUpdate("SQL語句");  //這裏的SQL語句是增刪改.返回的是影響幾行

B.查詢操作(DQL"對錶記錄的查詢操作")
ResultSet resu = stat.executeQuery("SQL查詢語句"); //這裏的SQL語句是查詢語句 DQL 

4、ResultSet 查詢表結果集

A.判斷是否還存在下一條數據
boolean b = resu.next();  //如果存在下一條數據,返回值爲true 不存在則返回false

B.獲取結果集當中的數據
a.通過查詢到的結果集,索引值獲取(索引值從1開始)
    int data01 = resu.getInt(1);        //獲取到的是查詢結果集索引爲1的int類型的數據
    String data02 = resu.getString(2);  //獲取到的是查詢結果集索引爲2的String類型的數據
b.通過查詢到的結果集,列名稱獲取
    int data01 = resu.getInt("id");         //獲取到的是查詢結果集列名是id的int類型的數據
    String data02 = resu.getString("name"); //獲取到的是查詢結果集列名是name的String類型的數據

5、PrepareStatement 操作數據庫

A.獲取預置操作
 String sql = "select * from user where username = ? and password = ?";
PreparedStatement ps = Connection.prepareStatement(sql); //通過預置對象,獲取連接的操作

B.設置參數
ps.setString(1,"root"); //參數1:第幾個問號,參數2:對應預置的值
ps.setString(2,"123");//參數1:第幾個問號,參數2:對應預置的值

C.執行SQL語句
ps.executeQuery();

JDBC工具類的寫法

//[1]靜態代碼塊,用於加載靜態成員變量(4個文件當中的數據)
//[2]靜態的工具方法 Connection getConnection()
//[3]釋放資源的方法【重載的方法】 傳入2個參數,傳入3個參數
public class JDBCUtils {

private static String url;
private static String user;
private static String password;
private static String driver;
/**
 * 文件的讀取,只需要讀取一次即可拿到這些值。使用靜態代碼塊
 */
static{
    //讀取資源文件,獲取值。

    try {
        //1. 創建Properties集合類。
        Properties pro = new Properties();
        //獲取src路徑下的文件的方式--->ClassLoader 類加載器
        ClassLoader classLoader = JDBCUtils.class.getClassLoader();
        URL res  = classLoader.getResource("jdbc.properties");
        String path = res.getPath();
       //2. 加載文件
       pro.load(new FileReader(path));
        //3. 獲取數據,賦值
        url = pro.getProperty("url");
        user = pro.getProperty("user");
        password = pro.getProperty("password");
        driver = pro.getProperty("driver");
        //4. 註冊驅動
        Class.forName(driver);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}


/**
 * 獲取連接
 * @return 連接對象
 */
public static Connection getConnection() throws SQLException {
    Connection conn = DriverManager.getConnection(url, user, password);
    return conn;
}

/**
 * 釋放資源
 * @param stmt
 * @param conn
 */
public static void close(Statement stmt, Connection conn){
    if( stmt != null){
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if( conn != null){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


/**
 * 釋放資源
 * @param stmt
 * @param conn
 */
public static void close(ResultSet rs, Statement stmt, Connection conn){
    if( rs != null){
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if( stmt != null){
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if( conn != null){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

}

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