Java 程式設計()  第十 一章 Java+MySQL 專題:銀行存款系統   上一頁    下一頁

 

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(欄位)AveSumMaxMin

 

 

翻轉工作室:粘添壽

 

Java 程式設計(二) 含物件導向

 

 

翻轉電子書系列: