環境準備
- JDK 1.5+(現代建議 JDK 8/11/17 LTS)。
- MySQL Server 安裝完成、服務啟動。
- 下載 MySQL Connector/J (JDBC 驅動):
dev.mysql.com/downloads/connector/j/
解壓取出 mysql-connector-java-x.x.xx.jar。
Classpath 配置(兩種方式擇一)
- 系統環境變數:
CLASSPATH=.;D:\mysql-connector-java-5.0.5-bin.jar(含當前目錄 . 與分號分隔)。
- IDE/建構工具(推薦):Maven/Gradle 專案加入依賴:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>
建立測試資料庫與表
CREATE DATABASE scutcs;
USE scutcs;
CREATE TABLE student (
sno CHAR(7) NOT NULL PRIMARY KEY,
sname VARCHAR(8) NOT NULL,
sex CHAR(2) NOT NULL,
bdate DATE NOT NULL,
height DECIMAL(5,2) DEFAULT 0
);
INSERT INTO student VALUES
('0104421','周遠行','男','1985-01-01',175.5),
('0208123','王義平','男','1986-02-02',170.0),
('0209120','王大力','男','1987-03-03',180.0),
('0309119','李維','女','1988-04-04',160.0),
('0309203','歐陽美林','女','1989-05-05',165.0);
完整 Java 代碼範例
import java.sql.*;
public class JDBCTest {
public static void main(String[] args) {
String driver = "com.mysql.cj.jdbc.Driver"; // 8.0+ 驅動類
String url = "jdbc:mysql://127.0.0.1:3306/scutcs?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Taipei";
String user = "root";
String password = "root";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
if (!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT sno, sname FROM student");
System.out.println("-----------------");
System.out.println("執行結果如下所示:");
System.out.println("-----------------");
System.out.println("學號\t姓名");
System.out.println("-----------------");
while (rs.next()) {
String sno = rs.getString("sno");
String sname = rs.getString("sname");
// 若資料庫為 UTF-8,通常無需手動轉碼;舊版 GBK 環境才需下行
// sname = new String(sname.getBytes("ISO-8859-1"), "GB2312");
System.out.println(sno + "\t" + sname);
}
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
System.err.println("找不到驅動程式: " + e.getMessage());
} catch (SQLException e) {
System.err.println("SQL 錯誤: " + e.getMessage());
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
關鍵點提醒
| 項目 | 說明 |
| 驅動類別名 | 5.1.x: com.mysql.jdbc.Driver;8.0+: com.mysql.cj.jdbc.Driver |
| URL 參數 | useUnicode=true&characterEncoding=UTF-8 解決中文;serverTimezone 避免時區警告 |
| 資源關閉 | 一定要在 finally 或 try-with-resources 關閉 ResultSet/Statement/Connection |
| PreparedStatement | 生產環境**務必用參數化查詢**防 SQL 注入、提升效能 |
| 連線池 | 實務上配合 HikariCP/Druid/Tomcat JDBC Pool,不直接建立連線 |
原文標題:java連接MYSQL
連結:https://www.cnblogs.com/soplayer/archive/2007/06/26/796565.html