MySQL 篇 - Java 连接 MySQL 数据库并实现数据交互

在现代应用中,数据库是不可或缺的一部分。Java 作为一种广泛使用的编程语言,提供了丰富的 API 来与各种数据库进行交互。本文将详细介绍如何在 Java 中连接 MySQL 数据库,并实现基本的数据交互功能。

一、环境准备

1.1 安装 MySQL

首先,确保你已经安装了 MySQL 数据库。可以通过 MySQL 官网 下载并安装适合你操作系统的版本。

1.2 创建数据库和表

在安装完成后,登录 MySQL 命令行工具,创建一个名为test_db的数据库,并在其中创建一个名为users的表:

CREATE DATABASE test_db; USE test_db; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL );
1.3 添加 MySQL Connector/J 依赖

在 Java 项目中,你需要添加 MySQL Connector/J 作为依赖。如果你使用 Maven,可以在pom.xml中添加如下依赖:

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.32</version> <!-- 请根据最新版本更新 --> </dependency>

二、Java 代码实现

2.1 创建数据库连接

接下来,在 Java 代码中实现与 MySQL 数据库的连接。以下是一个简单的连接示例:

package com.example.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySQLConnection { private static final String URL = "jdbc:mysql://localhost:3306/test_db"; // 数据库地址 private static final String USER = "root"; // 数据库用户名 private static final String PASSWORD = "your_password"; // 数据库密码 public static Connection getConnection() { Connection connection = null; try { // 加载 JDBC 驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 获取数据库连接 connection = DriverManager.getConnection(URL, USER, PASSWORD); System.out.println("数据库连接成功!"); } catch (ClassNotFoundException e) { System.out.println("找不到 JDBC 驱动!" + e.getMessage()); } catch (SQLException e) { System.out.println("数据库连接失败!" + e.getMessage()); } return connection; } }
2.2 插入数据

接下来,我们编写一个方法来插入用户数据到users表中:

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class UserDAO { public void addUser(String username, String password) { String sql = "INSERT INTO users (username, password) VALUES (?, ?)"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setString(1, username); preparedStatement.setString(2, password); int rowsAffected = preparedStatement.executeUpdate(); System.out.println("成功插入 " + rowsAffected + " 行数据。"); } catch (SQLException e) { System.out.println("插入数据失败!" + e.getMessage()); } } }
2.3 查询数据

下面是一个查询用户数据的方法:

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class UserDAO { // 其他代码... public void getAllUsers() { String sql = "SELECT * FROM users"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery()) { while (resultSet.next()) { int id = resultSet.getInt("id"); String username = resultSet.getString("username"); String password = resultSet.getString("password"); System.out.println("用户ID: " + id + ", 用户名: " + username + ", 密码: " + password); } } catch (SQLException e) { System.out.println("查询数据失败!" + e.getMessage()); } } }
2.4 更新数据

更新用户信息的方法如下:

public class UserDAO { // 其他代码... public void updateUserPassword(int id, String newPassword) { String sql = "UPDATE users SET password = ? WHERE id = ?"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setString(1, newPassword); preparedStatement.setInt(2, id); int rowsAffected = preparedStatement.executeUpdate(); System.out.println("成功更新 " + rowsAffected + " 行数据。"); } catch (SQLException e) { System.out.println("更新数据失败!" + e.getMessage()); } } }
2.5 删除数据

删除用户数据的方法如下:

public class UserDAO { // 其他代码... public void deleteUser(int id) { String sql = "DELETE FROM users WHERE id = ?"; try (Connection connection = MySQLConnection.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setInt(1, id); int rowsAffected = preparedStatement.executeUpdate(); System.out.println("成功删除 " + rowsAffected + " 行数据。"); } catch (SQLException e) { System.out.println("删除数据失败!" + e.getMessage()); } } }

三、测试代码

在主程序中测试上述功能,创建Main类并添加如下代码:

public class Main { public static void main(String[] args) { UserDAO userDAO = new UserDAO(); // 插入用户 userDAO.addUser("john_doe", "password123"); // 查询用户 userDAO.getAllUsers(); // 更新用户密码 userDAO.updateUserPassword(1, "new_password"); // 查询用户 userDAO.getAllUsers(); // 删除用户 userDAO.deleteUser(1); // 查询用户 userDAO.getAllUsers(); } }

四、总结

通过本文的介绍,你已经学会了如何在 Java 中连接 MySQL 数据库并实现数据交互。主要内容包括:

  • 数据库连接:使用 JDBC 连接 MySQL 数据库。
  • 数据操作:实现插入、查询、更新和删除(CRUD)操作。
  • 最佳实践:使用PreparedStatement避免 SQL 注入。

在实际应用中,建议使用连接池(如 HikariCP 或 DBCP)来提高性能和资源利用率。同时,可以考虑使用 ORM 框架(如 Hibernate 或 MyBatis)来简化数据库操作,提高开发效率。希望本文能帮助你快速上手 Java 与 MySQL 的数据交互!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1131405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于BS架构的积分制零食自选平台-计算机毕业设计源码+LW文档

摘要 本文介绍了一个基于BS&#xff08;Browser/Server&#xff0c;浏览器/服务器&#xff09;架构的积分制零食自选平台的设计与实现。该平台旨在为用户提供一个便捷、个性化的零食购物体验&#xff0c;并通过积分制度激励用户的消费行为。平台的前端采用HTML、CSS和JavaScrip…

MySQL 查看有哪些表

在 MySQL 数据库中&#xff0c;要查看某个数据库中有哪些表&#xff0c;你可以使用以下几种方法&#xff1a; 方法一&#xff1a;使用 SHOW TABLES 命令连接到 MySQL 服务器&#xff1a; 首先&#xff0c;你需要使用 MySQL 客户端工具&#xff08;如 mysql 命令行工具、MySQL W…

【收藏级】揭秘Claude Research:构建高性能多智能体AI系统的实战经验

Anthropic介绍了Claude Research功能的多智能体系统架构&#xff0c;由主导智能体协调多个并行子智能体完成复杂研究任务。该系统在开放式问题处理上表现优异&#xff0c;性能较单智能体提升90.2%。文章详细阐述了系统架构、执行流程、提示工程原则、评测方法及生产环境中的挑战…

基于python深度学习的面部表情识别系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

ChatGPT推出健康模式:结合医疗数据提供个性化建议

OpenAI希望确保用户从ChatGPT获得的医疗信息尽可能准确。每天约有4000万人依赖ChatGPT获取医疗问题的答案。作为回应&#xff0c;OpenAI宣布推出ChatGPT Health&#xff0c;这是ChatGPT中一个专门围绕健康和保健的"专用体验"。该功能将使用户能够将医疗记录和可穿戴设…

宠物走失信息管理系统-计算机毕业设计源码+LW文档

摘要 随着新世纪无纸化办公方式的普及&#xff0c;自动化信息处理和基于网络的信息交互方式已被广泛应用。现在很多行业基本上都是交由计算机进行管理和测试&#xff0c;网络与计算机已成为整个线上管理体系中的重要组成部分。虽然信息技术广泛应用和数据存取更加方便&#xff…

【滤波跟踪】基于 EKF的姿态角估计实战(核心是融合 IMU 传感器数据,通过四元数建模实现 RollPitchYaw 姿态估计)matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

福特推出AI数字助理及新一代BlueCruise自动驾驶技术

福特汽车周三在2026年消费电子展上宣布&#xff0c;正在开发一款AI数字助理&#xff0c;将首先在该公司的智能手机应用中推出&#xff0c;然后在2027年扩展到车辆中。该公司还展示了下一代BlueCruise高级驾驶辅助系统&#xff0c;该系统制造成本更低&#xff0c;功能更强大&…

个性化服装搭配推荐小程序-计算机毕业设计源码+LW文档

摘 要 随着消费者对个性化服装搭配需求的日益增长&#xff0c;传统的电商推荐系统已难以满足用户对时尚风格与实用性的综合要求。本文设计并实现了一种基于用户偏好、商品信息、风格匹配及反馈优化的个性化服装搭配推荐小程序。对于传统的线下管理模式&#xff0c;不仅是人们的…

USACO历年白银组真题解析 | 2024年1月Potion Farming

​欢迎大家订阅我的专栏&#xff1a;算法题解&#xff1a;C与Python实现&#xff01; 本专栏旨在帮助大家从基础到进阶 &#xff0c;逐步提升编程能力&#xff0c;助力信息学竞赛备战&#xff01; 专栏特色 1.经典算法练习&#xff1a;根据信息学竞赛大纲&#xff0c;精心挑选…

https://blog.csdn.net/Tiam_cr/article/details/156733300?sharetype=blogdetailsharerId=156733300shar

vhttps://blog.csdn.net/Tiam_cr/article/details/156733300?sharetypeblogdetail&sharerId156733300&sharereferPC&sharesourceTiam_cr&sharefrommp_from_link加粗样式

【图像隐写】基于小波变换算法的隐写术的信息安全附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

【电脑玩机小技巧】-Windows电脑多开微信完整教程

Windows电脑多开微信完整教程 #mermaid-svg-VvEPT9ERMFFrFQKs{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-s…

联想Legion Pro可卷曲概念机展现移动大屏游戏新体验

如果你曾在笔记本电脑上玩过视频游戏&#xff0c;我相信你一定希望拥有更大的显示屏。我当然也有同感&#xff1a;16英寸的屏幕空间有时会让我在游戏中难以发现敌人。好消息是&#xff0c;联想在2026年CES展会上发布了一款全新的游戏笔记本概念产品&#xff0c;可能正好解决我们…

深度学习毕设项目:基于深度学习算法python训练数字识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

MySQL 数据库连接池爆满问题排查与解决

目录 MySQL 数据库连接池爆满问题排查与解决 一、问题影响 二、问题确认 三、收集信息 四、SQL 语句分析 五、应用层代码分析 六、连接池配置检查 七、监控工具使用 八、案例分析 在实际的应用开发中&#xff0c;我们可能会遇到 MySQL 数据库连接池爆满的情况。这种情…

【计算机毕业设计案例】基于python训练数字识别基于深度学习算法训练数字识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

印度和新加坡在智能体AI采用方面超越全球同行

亚洲市场的组织在人工智能货币化方面比西方同行行动更快&#xff0c;印度和新加坡在从成本削减向收入增长的全球转型中处于领先地位。技术咨询公司Thoughtworks的最新研究显示&#xff0c;"效率时代"实际上已经结束。这项研究调查了全球3500名IT决策者和高管&#xf…

救命神器!研究生必用9款AI论文软件深度测评TOP9

救命神器&#xff01;研究生必用9款AI论文软件深度测评TOP9 学术写作工具的实用价值与评测标准 在当前科研环境日益激烈的背景下&#xff0c;研究生群体面临着论文撰写、文献整理、数据处理等多重压力。如何高效完成学术任务&#xff0c;已成为影响研究效率的关键因素。随着AI技…

深度学习计算机毕设之基于深度学习算法训练数字识别基于python训练数字识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…