|
11-4 Java + MySQL 連結
內容:
11-4-1 Java 連接 MySQL 設定
接著必須設定 JDBC(Java Database Connection),Java 程式才能連結到 MySQL,有下面幾個步驟:
(A) 下載 MySQL Connector/J
到 MySQL 網頁上下載(https://dev.mysql.com/downloads/connector/j/) ,如下:

下載之後,將其解壓縮,接下來。
(B) 複製 Connect Jar 檔案
將 mysql-connector-java-5.1.45-bin.jar 複製下來,如下:

(C) 張貼上 Connect Jar 檔案
接著,將此檔案複製到個人方法庫的目錄下,譬如,選定於 C:\JAR 目錄下,複製到該目錄下,如下:

(C) 設定 CLASSPATH 環境變數
接著,必須告訴 Java 方法庫在哪裡。由『桌面』=>『電腦』按又鍵 =>『內容』=>『進階系統設定』=>『環境變數』=>『新增』,則『變數名稱』輸入 CLASSPATH,『變數值』輸入『.;C:\JAR\ mysql-connector-java-5.1.45-bin.jar;%CLASSPATH%』,如下:

11-4-2 開發 JDBC 連結MySQL 步驟
以 Java 連結 MySQL 程式設計,由下列幾個步驟完成:
(a)
載入 JDBC
驅動程式:利用 Class.forName("com.mysql.jdbc.Driver ") 。
(b)
開啟連線:Connection conn = DriverManager.getConnection(“URL/資料庫”, “帳號”, “密碼”)。URL 如:"jdbc:mysql://localhost:3306/bank_db"。
(c)
產生 SQL
執行物件:Statement st = conn.createstatement()。
(d)
資料表更新命令:st.excuteUpdate(SQL 命令),如傳回 1 表執行成功;傳回 0 表執行失敗。如:st.excuteUpdate(“insert into account value(“345678912”, “張友德”, “2000”)。
(e)
查詢命令:ResultSet rs = st.excuteQuery(SQL 命令)。
(f)
取得資料表訊息:ResultSetMetaData rsmeta = rs.getMetaData(); 取得資料表訊息,如下:
1.
欄位數量:int cols = rsmeta.getColumnCount();
2.
欄位名稱:String col_name = rsmeta.getColumnLable(i);
3.
欄位資料型態:String col_tyep = rsmeta.getColumnType(i);
(g)
游標移動: rs.next(),為 0 表示結束,1 表示到下一筆。
(h)
擷取欄位 i
資料:rs.getString(i)、rs.Date(i)、rs.getTime(i)、getDouble(i)、getInt(i),依欄位資料型態擷取。
(i)
關閉資料庫連線:conn.close();。
11-4-3 連結MySQL 程式範例
(A) 程式功能:Ex11_1.java
請先在 Windows 7 系統上安裝 AppServ 套件,並匯入 Bank_db 資料庫(下一節說明)。此程式連結到本機 localhost 上的 MySQL 伺服器內的 Bank_db 資料庫(jdbc:mysql://localhost:3306/bank_db),並查詢 Account 資料表內容,再印出。
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 |
//Ex11_1.java
import java.sql.*;
public class Ex11_1 {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
//
連結
MySQL
驅動程式
Connection conn = null;
Statement st = null;
ResultSet rs = null;
ResultSetMetaData rsmeta = null;
String url = "jdbc:mysql://localhost:3306/bank_db";
//
連結主機
localhost:3306
伺服器內
Bank_db
資料庫
String user = "root";
//
帳戶
root
String password = "12345678";
// root
密碼
try {
Class.forName(driver);
conn =
DriverManager.getConnection(url, user, password);
//
連結到主機
MySQL
內
Bank_db
資料庫
System.out.println("成功連結
Bank_db
資料庫");
st = conn.createStatement();
//
產生
SQL
敘述物件
rs = st.executeQuery("select * from
account");//
下達
SQL
命令
while (rs.next()) {
//
擷取下一筆紀錄
System.out.printf("%s\t",
rs.getString("ID"));
// ID
欄位內容
System.out.printf("%s\t",
rs.getString("name"));
// name欄位內容
System.out.printf("%s\t",
rs.getInt("balance"));//
balance
內容
System.out.printf("\n");
}
conn.close();
//
關閉資料庫連線
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
}
} |
執行結果:
|
D:\Java2_book\chap11>javac -encoding utf-8
Ex11_1.java
D:\Java2_book\chap11>java Ex11_1
Thu Dec 07 15:26:37 CST 2017 WARN: Establishing SSL
connection without s
…..
成功連結
Bank_db 資料庫
1234512345783
林郁評
220000
1234567891232
郭大豪
150000
2134567812343
林惠容
2300000
3412345671238
劉姵君
1100000
4512341231235
林秀氣
3021000
9872345123902
陳立人
4301234 |
11-4-4 SQL 命令匯集
|
命
令 |
格
式 |
命
令 |
格
式 |
|
|
Select |
Select "欄位"
From "表格名"; |
Distinct |
Select Distinct "欄位"
From "表格名"; |
|
|
Where |
Select "欄位"
From "表格名"
Where "condition"; |
|
|
And/OR |
Select "欄位"
From "表格名"
Where "簡單條件"
{[And|Or] "簡單條件"}+
; |
|
|
In |
SELECT "欄位"
FROM "表格名"
WHERE "欄位"
IN ('值1',
'值2',
...); |
|
|
Between |
SELECT "欄位"
FROM "表格名"
WHERE "欄位"
BETWEEN '值1'
AND '值2'; |
|
|
Like |
SELECT "欄位"
FROM "表格名"
WHERE "欄位"
LIKE {模式}; |
|
|
Order By |
SELECT "欄位"
FROM "表格名"
[WHERE "條件"]
ORDER BY "欄位"
[ASC, DESC]; |
|
|
Count |
SELECT COUNT("欄位")
FROM "表格名"; |
|
|
Group by |
SELECT "欄位1",
SUM("欄位2")
FROM "表格名"
GROUP BY "欄位1" |
|
|
Having |
SELECT "欄位1",
SUM("欄位2")
FROM "表格名"
GROUP BY "欄位1"
HAVING (函數條件); |
|
|
Create |
CREATE TABLE "表格名"
("欄位
1" "欄位
1
資料種類",
"欄位
2" "欄位
2
資料種類"",
... ); |
|
|
Insert |
INSERT INTO "表格名"
("欄位1",
"欄位2",
...)
VALUES ("值1",
"值2",
...); |
|
|
Drop |
DROP TABLE "表格名"; |
Delete |
DELETE FROM "表格名"
WHERE "條件"; |
|
|
Truncate |
TRUNCATE TABLE "表格名"; |
|
|
Update |
UPDATE "表格名"
SET "欄位1"
= [新值]
WHERE "條件"; |
(Not) Like |
*、_(底線)、%、[ABC]、Pattern |
|
|
運算 |
+、-、*、/、% |
|
|
|
|
|
|
比較 |
=、
<>
、
<
、>
、
>=、between |
|
|
|
|
聚合 |
Count(欄位)、Ave、Sum、Max、Min |
|
|