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

server/2025/1/20 2:58:58/

在现代应用中,数据库是不可或缺的一部分。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.ppmy.cn/server/159788.html

相关文章

如何选择合适的服务器?服务器租赁市场趋势分析

服务器租赁市场概览 服务器租赁 market可以分为两种类型&#xff1a;按小时、按月和按年&#xff0c;每种模式都有其特点和适用场景&#xff0c;按小时租赁是最经济实惠的选择&#xff0c;适用于短期需求&#xff1b;按月租赁则适合中长期使用&#xff1b;而按年租赁则是最灵活…

AI编程工具使用技巧——通义灵码

活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…

GPT-4o背后的语音技术

GPT-4o背后的语音技术 GPT-4o是一个any2any的多模态模型,能够接受文本、音频、图像、视频等多模态输入,也能够生成包含文本、语音、图像和视频等混合内容的多模态输出。本文主要谈语音多模态的实现,并分享一些对于语音研究未来发展的看法。 GPT-4o (“o” 代表 “omni”) …

Day09-后端Web实战——部门管理开发Logback日志技术

目录 部门管理开发1. 删除部门1.1 需求分析 1.2 思路分析1.2.1 思路说明1.2.1 简单参数接收 1.3 代码实现1.4 Mybatis中的#与$ 2. 新增部门2.1 需求分析2.2 思路分析2.2.1 思路说明2.2.2 json参数接收 2.3 代码实现 3. 修改部门3.1 查询回显3.1.1 需求分析3.1.2 思路分析3.1.2.…

【MySQL】表操作

表操作 一、创建表 1、语句2、语句介绍3、注意事项4、介绍5、示例 二、查看表结构 1、语句2、介绍3、返回的信息4、示例 三、添加字段 1、语句2、语句介绍3、示例 四、修改 1、语句2、语句介绍3、示例 五、删除 1、语句2、示例 六、修改表名 1、语句2、语句介绍3、示例 七、删…

【JVM-6】JVM 监控工具 jstat 的使用和具体应用案例

在 Java 应用开发和运维中&#xff0c;监控 JVM 的运行状态是确保应用性能和稳定性的关键。jstat 是 JDK 自带的一个轻量级命令行工具&#xff0c;用于监控 JVM 的运行时状态&#xff0c;特别是垃圾回收&#xff08;GC&#xff09;和内存使用情况。与图形化工具&#xff08;如 …

C++实现设计模式---装饰器模式 (Decorator)

装饰器模式 (Decorator) 装饰器模式 是一种结构型设计模式&#xff0c;它允许动态地将责任附加到对象上&#xff0c;既可以在运行时给一个对象添加功能&#xff0c;又不会影响其他对象的功能。 意图 动态地扩展对象的功能。避免创建过多的子类&#xff0c;通过装饰器来“包装…

浅谈云计算17 | 分布式存储

分布式存储 一、云存储系统结构模型1.1 存储层1.2 基础管理层1.3 应用接口层1.4 访问层 二、HDFS技术2.1 HDFS原理与架构2.1.1 架构组件2.1.2 数据存储与读取 2.2 HDFS特性分析2.2.1 容错性机制2.2.2 读写性能优化2.2.3 数据一致性保障 三、对等存储系统3.1 对等存储系统概述3.…