---
# System prepended metadata

title: Java關鍵字（口訣？）
tags: [Java]

---

###### tags: `Java`
# Java關鍵字（口訣？）
## 介面五大功能
1. 多重繼承
2. 定義規格
3. 貼標籤
4. 型別轉換
5. 降低相依性

## 交易三大方法
1. setAutoCommit(boolean autoCommit)：設定自動提交模式
2. commit()：結束目前的交易，並將所有暫存資料正式存入資料庫
3. rollback()：結束目前的交易並遺棄所有暫存資料


## 交易四基本要求
1. A：原子性
2. C：一致性
3. I：隔離行為
4. D：持續性

## Servlet生命週期
1. 創建實體
2. 初始化
3. 服務
4. 卸載

## JDBC四大箴言
1. 載入驅動
2. 建立連結
3. 建立statement物件
4. 執行SQL指令

### 在開始之前......
請先初始化以下設定：
```
Connection con = null;
Statement stmt = null;  或  PreparedStatement pstmt = null;
ResultSet rs = null;
```
（一種「起初，神創造天地」的概念......）

### 1. 載入驅動
一般而言就是載入要連結資料庫的驅動到JVM裡面，程式碼大概長這樣：
```
try {
    Class.forName("com.mysql.cj.jdbc.Driver");    //會因載入不同資料庫的驅動而有所差異
    System.out.println("Loading driver successfully! (載入成功！)");
} catch  (ClassNotFoundException ce) {
      ce.printStackTrace();  
}
```
但小吳老師的習慣是把Driver、登入資料庫的帳號密碼寫在util.java檔裡，在載入驅動時直接讀取，所以會變成：
```
try {
    Class.forName(Util.DRIVER);       ←就不用寫com.mysql.cj.jdbc啦~~
} catch (ClassNotFoundException ce) {
    ce.printStackTrace();
}
```
### 2. 建立連結
載入驅動後，就能以用DriverManager類別的getConnection()類別方法建立Connection物件（資料庫的URL、帳號、密碼在此輸入）：
```
try {
    con = DriverManager.getConnection(Util.URL, Util.USER, Util.PASSWORD);
    System.out.println("Connecting to database successfully! (連線成功！)");
} catch (SQLException se) {
    System.out.println(se.getMessage());
```
載入驅動與建立連結時常寫在一起：
```
try {
    Class.forName(Util.DRIVER);
    con = DriverManager.getConnection(Util.URL, Util.USER, Util.PASSWORD);
    System.out.println("Connecting to database successfully! (連線成功！)");
} catch (ClassNotFoundException ce) {      ←找無驅動阿阿阿阿阿
    System.out.println(ce);
} catch (SQLException se) {                ←連線失敗阿阿阿阿阿
    System.out.println(se);
```

### 3. 建立statement物件
Statement物件的目的是執行SQL指令，在建立好Connection物件後，就可以使用createStatement()方法建立Statement物件。
但基本上我們更偏好使用prepareStatement啦......
```
stmt = con.createStatement();
pstmt = con.prepareStatement();
```
Statement設定好後，就能夠各種更動（玩弄）資料庫啦！例如這樣：
```
pstmt.setInt(1, 7015);
pstmt.setString(2, "DAVID");
pstmt.setString(3, "MANAGER");
pstmt.setDate(4, java.sql.Date.valueOf("2016-01-01"));
pstmt.setDouble(5, 2500);
pstmt.setDouble(6, 0.0);
pstmt.setInt(7, 40);
```
或是這樣：
```
stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
↑只能義無反顧勇往直前的讀取，不可後退、更動資料庫內容
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
↑可前後移動和更新資料，但不反應資料修改
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
↑僅能來回滾動讀取，無法修改資料，但可反應資料修改
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
↑可來回滾動讀取與更動、反映資料修改
```


### 4. 執行SQL指令




英文
* BLOB：存檔案（圖片 or 影音資料）
* CLOB：存大量文字
* FIFO：先進先出
* LIFO：後進先出
* ACID：交易四基本要求


#### 網站安全四大任務
1. 驗證
2. 授權
3. 資料保密性
4. 資料完整性