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 |
|
|