JDBC连接Mysql模板(含查询+更新)

发布时间:2026/7/22 23:11:24

JDBC连接Mysql模板(含查询+更新) ✨ 核心思路1. 模板化复用固定代码不用改只需替换数据库连接参数​2. 资源自动管理使用 try-with-resources 自动关闭连接、Statement、ResultSet避免内存泄漏​3. 安全防注入更新操作使用 PreparedStatement 防止SQL注入风险完整可运行代码import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.PreparedStatement; public class ReadStudents { public static void main(String[] args) { // 只改这3个参数 String urljdbc:mysql://localhost:3306/student_db?useSSLfalseserverTimezoneUTC; String userroot; String password123456; // 以下是固定模板无需修改 // try-with-resources 自动关闭资源无需手动close try(Connection connection DriverManager.getConnection(url,user,password)){ // 加载MySQL驱动新版本JDBC可省略但写上更兼容 Class.forName(com.mysql.cj.jdbc.Driver); System.out.println(✅ 数据库连接成功); // 调用更新方法 updateData(connection); // 创建Statement对象执行查询 try(Statement statement connection.createStatement()){ String sqlSELECT * FROM students; try(ResultSet resultSet statement.executeQuery(sql)){ System.out.println(\n 学生列表); while (resultSet.next()){ int idresultSet.getInt(id); String nameresultSet.getString(name); // 修正getNString → getString int ageresultSet.getInt(age); System.out.printf(ID:%d, 姓名:%s, 年龄:%d%n,id,name,age); } } } }catch (ClassNotFoundException e){ System.err.println(❌ 驱动加载失败); e.printStackTrace(); }catch (SQLException e){ System.err.println(❌ 数据库操作出错); e.printStackTrace(); }catch (Exception e){ e.printStackTrace(); } } /** * 更新数据示例使用PreparedStatement防止SQL注入 */ private static void updateData(Connection connection) throws SQLException { String sqlUPDATE students SET age? WHERE id?; try(PreparedStatement pstmt connection.prepareStatement(sql)){ // 设置SQL参数 pstmt.setInt(1,22); // age22 pstmt.setInt(2,1); // WHERE id1 // 执行更新 int affectedRowspstmt.executeUpdate(); System.out.println( 更新了affectedRows行数据); } } }此次过程中遇到的问题1.驱动类名写错 ClassNotFoundException: com.mysql.jdbc.Driver问题现象加载驱动时抛出异常提示找不到驱动类。排查过程一开始写的是 com.mysql.jdbc.Driver 后来发现 MySQL 8.0 的驱动类名改了旧版驱动名不兼容。解决方法MySQL 8.0 驱动类名是 com.mysql.cj.jdbc.Driver 并且可以省略手动加载驱动JDBC 4.0 自动加载2.getNString() 方法报错 NullPointerException问题现象查询 name 字段时用 resultSet.getNString(name) 直接返回空指针。排查过程查了 MySQL 官方文档才知道 getNString() 是专门用来获取 NCHAR/NVARCHAR 类型的MySQL 普通字符串用 VARCHAR 所以用不了这个方法。解决方法换成 getString() 方法兼容所有字符串类型

相关新闻