尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【Java】IntelliJ IDEA 通过JDBC连接MySQL数据库实现数据增删改查
1. 环境准备与项目创建在开始之前我们需要确保开发环境已经准备就绪。首先你需要安装以下软件IntelliJ IDEA推荐使用最新版本社区版或旗舰版均可MySQL数据库建议使用5.7或8.0版本JDKJava开发工具包建议使用JDK 11或更高版本安装完成后打开IntelliJ IDEA点击File→New→Project选择Java项目模板。这里有个小技巧我习惯在创建项目时就勾选Create Git repository选项这样从一开始就能进行版本控制。项目命名建议使用有意义的名称比如JdbcCrudDemo。提示如果你使用的是MySQL 8.0版本需要注意驱动类名和连接URL与旧版本有所不同这个坑我当初踩过好几次。2. 添加MySQL JDBC驱动现在我们需要将MySQL的JDBC驱动添加到项目中。有两种常见方式2.1 手动添加JAR文件从MySQL官网下载Connector/J驱动建议选择8.0.x版本在项目根目录下创建libs文件夹将下载的mysql-connector-java-x.x.xx.jar文件复制到libs目录右键JAR文件选择Add as Library2.2 使用Maven管理依赖推荐如果你使用Maven只需在pom.xml中添加dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency我强烈推荐使用Maven方式因为它能自动处理依赖关系特别是当你需要升级驱动版本时特别方便。在实际项目中我们还会添加连接池依赖如HikariCP但这是后话。3. 创建数据库连接工具类为了避免重复代码我们先创建一个数据库连接工具类import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DbUtil { private static final String URL jdbc:mysql://localhost:3306/test_db?useSSLfalseserverTimezoneUTC; private static final String USER root; private static final String PASSWORD yourpassword; public static Connection getConnection() throws SQLException { try { Class.forName(com.mysql.cj.jdbc.Driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } return DriverManager.getConnection(URL, USER, PASSWORD); } }这里有几个需要注意的点MySQL 8.0需要指定时区参数serverTimezone生产环境应该将连接信息放在配置文件中实际项目中应该使用连接池而非每次都新建连接4. 实现CRUD操作4.1 创建用户表首先我们需要一个用户表来操作SQL如下CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );4.2 插入数据Createpublic static void createUser(String username, String email) { String sql INSERT INTO users(username, email) VALUES(?, ?); try (Connection conn DbUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { pstmt.setString(1, username); pstmt.setString(2, email); int affectedRows pstmt.executeUpdate(); System.out.println(插入成功影响行数: affectedRows); } catch (SQLException e) { e.printStackTrace(); } }4.3 查询数据Readpublic static void readUsers() { String sql SELECT * FROM users; try (Connection conn DbUtil.getConnection(); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(sql)) { while (rs.next()) { System.out.printf(ID: %d, 用户名: %s, 邮箱: %s, 创建时间: %s%n, rs.getInt(id), rs.getString(username), rs.getString(email), rs.getTimestamp(created_at)); } } catch (SQLException e) { e.printStackTrace(); } }4.4 更新数据Updatepublic static void updateUserEmail(int id, String newEmail) { String sql UPDATE users SET email ? WHERE id ?; try (Connection conn DbUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { pstmt.setString(1, newEmail); pstmt.setInt(2, id); int affectedRows pstmt.executeUpdate(); System.out.println(更新成功影响行数: affectedRows); } catch (SQLException e) { e.printStackTrace(); } }4.5 删除数据Deletepublic static void deleteUser(int id) { String sql DELETE FROM users WHERE id ?; try (Connection conn DbUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { pstmt.setInt(1, id); int affectedRows pstmt.executeUpdate(); System.out.println(删除成功影响行数: affectedRows); } catch (SQLException e) { e.printStackTrace(); } }5. 异常处理与最佳实践在实际开发中我们需要更完善的异常处理机制。这里分享几个我总结的经验使用try-with-resources如上面代码所示它可以自动关闭资源日志记录不要只是printStackTrace应该使用日志框架事务管理多个操作应该放在一个事务中SQL注入防护始终使用PreparedStatement一个改进版的异常处理示例public static void safeCreateUser(String username, String email) { String sql INSERT INTO users(username, email) VALUES(?, ?); try (Connection conn DbUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { conn.setAutoCommit(false); // 开始事务 pstmt.setString(1, username); pstmt.setString(2, email); pstmt.executeUpdate(); conn.commit(); // 提交事务 System.out.println(用户创建成功); } catch (SQLException e) { try { if (conn ! null) { conn.rollback(); // 回滚事务 } } catch (SQLException ex) { ex.printStackTrace(); } // 实际项目中应该记录日志 System.err.println(创建用户失败: e.getMessage()); } }6. 使用IntelliJ IDEA的数据库工具IntelliJ IDEA自带了强大的数据库工具可以极大提高开发效率点击右侧边栏的Database标签点击添加MySQL数据源填写连接信息后测试连接连接成功后可以直接查看和编辑数据这个工具特别适合快速验证SQL语句和查看数据变化比命令行方便多了。我经常用它来快速检查程序操作后的数据状态。7. 进阶技巧当你掌握了基本操作后可以考虑以下进阶内容使用连接池如HikariCP可以显著提高性能ORM框架MyBatis或Hibernate可以简化数据库操作分页查询使用LIMIT和OFFSET实现批量操作addBatch()和executeBatch()提高批量插入效率这里展示一个简单的批量插入示例public static void batchInsertUsers(ListUser users) { String sql INSERT INTO users(username, email) VALUES(?, ?); try (Connection conn DbUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { conn.setAutoCommit(false); for (User user : users) { pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getEmail()); pstmt.addBatch(); } int[] results pstmt.executeBatch(); conn.commit(); System.out.println(批量插入完成影响行数: Arrays.stream(results).sum()); } catch (SQLException e) { e.printStackTrace(); } }8. 常见问题排查在开发过程中你可能会遇到以下问题驱动类找不到检查驱动版本和类名是否正确时区问题在连接URL中添加serverTimezone参数SSL警告添加useSSLfalse参数连接超时检查MySQL服务是否启动防火墙设置一个完整的连接URL示例jdbc:mysql://localhost:3306/test_db?useSSLfalseserverTimezoneUTCallowPublicKeyRetrievaltrue我在实际项目中发现MySQL 8.0的时区和SSL问题是最常见的连接障碍特别是对于新手来说。记住这些参数可以节省大量调试时间。
RELATED

相关推荐

计算机毕业设计之基于jsp琴行管理系统

计算机毕业设计之基于jsp琴行管理系统

网络的广泛应用给生活带来了十分的便利。所以把琴行管理与现在网络相结合,利用JSP技术建设琴行管理系统,实现琴行管理系统的信息化。则对于进一步提高琴行管理发展,丰富琴行管理经验能起到不少的促进作用。琴行管理系统能够通过互联网得到广泛…

📅 2026/9/12 6:34:37
R3nzSkin国服换肤工具:英雄联盟皮肤修改完整指南

R3nzSkin国服换肤工具:英雄联盟皮肤修改完整指南

R3nzSkin国服换肤工具:英雄联盟皮肤修改完整指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 还在为英雄联盟皮肤价格昂贵而烦恼&#x…

📅 2026/8/20 21:51:20
PilotGo-web前端架构深度解析:构建高效集群管理界面

PilotGo-web前端架构深度解析:构建高效集群管理界面

PilotGo-web前端架构深度解析:构建高效集群管理界面 【免费下载链接】PilotGo-web PilotGo-web contains web frontend for PilotGo. 项目地址: https://gitcode.com/openeuler/PilotGo-web 前往项目官网免费下载:https://ar.openeuler.org/ar/ …

📅 2026/8/20 21:51:21
MORE NEWS

更多资讯

📰

鳑鲏鱼优化算法结合BP神经网络实现分类预测的Matlab源码详解

简介:这份源码包给出了鳑鲏鱼优化算法与BP神经网络结合的分类预测完整实现,面向高校学生在课程设计、期末大作业或毕业设计中的算法仿真场景。压缩包内共十一个文件,其中五个m文件提供主程序、优化算法、适应度函数及混淆矩阵绘制等核心代码&…

📰

改进型YOLOv7实战解析:从结构优化到部署

简介:基于YOLOv7改进的完整实践资料包,面向目标检测方向的研究者、算法工程师及高年级本科生,旨在通过可运行的源码、图像数据与实验报告,帮助读者系统掌握从结构优化、激活函数升级到数据增强的改进路径,并理解训练流…

📰

开源免费、轻量高效的mdput:能否成为Typora的可靠平替

1. 为什么 Typora 用户都在找平替1.1 从 Typora 收费说起Typora 大概是 Markdown 编辑器里知名度最高的那个。它把“所见即所得”做到了极致——左边不用开预览窗口,输入#后面跟个空格,标题样式立刻呈现,打字体验几乎和 Word 一样流畅。2018 …

📰

TDengine 零代码接入 SparkplugB:基于 taosExplorer 的 IIoT 数据同步任务配置指南

TDengine 零代码接入 SparkplugB:基于 taosExplorer 的 IIoT 数据同步任务配置指南 【免费下载链接】TDengine High-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios 项目地址: https://gitcode.com/GitHub_Trending/t…

📰

mdput评测:一款免费轻量级Markdown编辑器,Typora的替代之选

最近这两周,我把手头的主力Markdown编辑器从Typora换成了mdput,原因很直接:我不想为了一个编辑器去折腾破解激活,也不想在公司和家里两台电脑之间来回对比哪个版本能用。Typora确实是好东西,但从1.0开始收费之后&#…

📰

使用 AI SDK 接入 GMI Cloud:OpenAI 兼容协议下的开源权重模型推理实战

使用 AI SDK 接入 GMI Cloud:OpenAI 兼容协议下的开源权重模型推理实战 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents 项目地…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬