mysql-connector-java.jar 加入 classpath。CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT);
import java.sql.*;
public class DBUtil {
static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf8";
static final String USER = "root";
static final String PASS = "123456";
static { try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); } }
public static Connection getConn() throws SQLException {
return DriverManager.getConnection(URL, USER, PASS);
}
public static void close(ResultSet rs, Statement st, Connection conn) {
try { if (rs != null) rs.close(); } catch (Exception e) {}
try { if (st != null) st.close(); } catch (Exception e) {}
try { if (conn != null) conn.close(); } catch (Exception e) {}
}
}
public class UserDao {
// 增
public void add(User u) {
String sql = "INSERT INTO user(name,age) VALUES(?,?)";
try (Connection conn = DBUtil.getConn();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, u.getName());
ps.setInt(2, u.getAge());
ps.executeUpdate();
} catch (Exception e) { e.printStackTrace(); }
}
// 刪
public void delete(int id) { /* UPDATE/DELETE 同理用 PreparedStatement */ }
// 改
public void update(User u) { /* ... */ }
// 查
public List queryAll() {
List list = new ArrayList<>();
String sql = "SELECT * FROM user";
try (Connection conn = DBUtil.getConn();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
User u = new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
u.setAge(rs.getInt("age"));
list.add(u);
}
} catch (Exception e) { e.printStackTrace(); }
return list;
}
}
PreparedStatement 防 SQL 注入、自動處理類型轉換。try-with-resources 自動關閉資源,避免洩漏。參考博客:JDBC 操作 MySQL 親測可用