以 MySQL 為例,實現新聞標題表 firstLevelTitle 的增刪改查(CRUD)操作,展示 JDBC 標準編程模式。
CREATE TABLE firstLevelTitle (
id INT PRIMARY KEY AUTO_INCREMENT,
titleName VARCHAR(100),
creator VARCHAR(50),
createTime DATETIME
);

mysql-connector-java-x.x.x.jar 放入項目 lib 目錄並加入 Build Path
package bzu.jsj.dao;
import java.sql.*;
import java.text.*;
import java.util.Date;
public class FltDao {
// 數據庫連接參數
private final String CLS = "com.mysql.jdbc.Driver"; // MySQL 5.x 驅動類
private final String URL = "jdbc:mysql://localhost:3306/news";
private final String USER = "root";
private final String PWD = "123456";
private Connection conn = null;
private PreparedStatement pStmt = null;
private ResultSet rs = null;
// 1. 添加
public int addFlt(String titleName, String creator, Date createTime) {
int iResult = 0;
try {
Class.forName(CLS);
conn = DriverManager.getConnection(URL, USER, PWD);
String sql = "INSERT INTO firstLevelTitle(titleName, creator, createTime) VALUES(?,?,?)";
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, titleName);
pStmt.setString(2, creator);
pStmt.setString(3, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime));
iResult = pStmt.executeUpdate();
conn.close();
} catch (Exception ex) { ex.printStackTrace(); }
return iResult;
}
// 2. 修改
public int editFlt(int id, String titleName) {
int iResult = 0;
try {
Class.forName(CLS);
conn = DriverManager.getConnection(URL, USER, PWD);
String sql = "UPDATE firstLevelTitle SET titleName=? WHERE id=?";
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, titleName);
pStmt.setInt(2, id);
iResult = pStmt.executeUpdate();
conn.close();
} catch (Exception ex) { ex.printStackTrace(); }
return iResult;
}
// 3. 刪除
public int delFlt(int id) {
int iResult = 0;
try {
Class.forName(CLS);
conn = DriverManager.getConnection(URL, USER, PWD);
String sql = "DELETE FROM firstLevelTitle WHERE id=?";
pStmt = conn.prepareStatement(sql);
pStmt.setInt(1, id);
iResult = pStmt.executeUpdate();
conn.close();
} catch (Exception ex) { ex.printStackTrace(); }
return iResult;
}
// 4. 查詢列表
public void showFltList(String tip) {
try {
Class.forName(CLS);
conn = DriverManager.getConnection(URL, USER, PWD);
String sql = "SELECT * FROM firstLevelTitle";
pStmt = conn.prepareStatement(sql);
rs = pStmt.executeQuery();
System.out.println(tip);
while (rs.next()) {
System.out.println("id:" + rs.getInt("id") + ",名稱:" + rs.getString("titleName")
+ ",創建者:" + rs.getString("creator") + ",創建時間:" + rs.getString("createTime"));
}
conn.close();
} catch (Exception ex) { ex.printStackTrace(); }
}
// 測試主方法
public static void main(String[] args) {
FltDao dao = new FltDao();
dao.addFlt("體育", "管理員", new Date());
dao.addFlt("娛樂", "管理員", new Date());
dao.showFltList("添加後列表:");
dao.editFlt(1, "體育 1");
dao.showFltList("修改後列表:");
dao.delFlt(2);
dao.showFltList("刪除後列表:");
}
}
com.mysql.jdbc.Driver,8.0+ 用 com.mysql.cj.jdbc.Driver 並需在 URL 添加 ?useSSL=false&serverTimezone=UTC。setXxx 方法自動處理類型轉換與轉義。ResultSet、Statement、Connection,或使用 try-with-resources (Java 7+)。yyyy-MM-dd HH:mm:ss。printStackTrace。出處:趙玉強博客