当前位置: 首页 > article >正文

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.kler.cn/a/509635.html

相关文章:

  • 图形化界面MySQL(MySQL)(超级详细)
  • Redis可视化工具--RedisDesktopManager的安装
  • 某国际大型超市电商销售数据分析和可视化
  • MyBatisPlus学习笔记
  • 【数据库】MySQL数据库SQL语句汇总
  • 数据可视化:让数据讲故事的艺术
  • K8S中Pod调度之污点和容忍
  • 20250117面试鸭特训营第25天
  • LeetCode 383. 赎金信
  • 第10篇:从入门到精通:深入理解Python继承与多态的概念及应用
  • Github 2025-01-18 Rust开源项目日报 Top10
  • DLNA库Platinum新增安卓64位so编译方法
  • 网络安全防护指南:筑牢网络安全防线(510)
  • 放大芯片参数阅读
  • flutter开发-figma交互设计图可以转换为flutter源代码-如何将设计图转换为flutter源代码-优雅草央千澈
  • Docker 中安装 Redis 并开启远程访问
  • 面向法律场景的大模型RAG检索增强解决方案
  • FPGA 全局时钟缓存连接和布局跟踪
  • python-leetcode-快乐数
  • 如何运行第一个Tomcat HttpServlet 程序
  • Mysql--实战篇--连接泄漏问题(什么是连接泄漏,未关闭SqlSession,长事务处理,连接池管理等)
  • JAVA-Exploit编写(7)--http-request库文件上传使用续篇
  • MySQL课堂练习(多表查询练习)
  • Mysql 设置 慢SQL时间并触发邮件
  • HTTP / 2
  • 用户中心项目教程(四)---Vue脚手架完成前端初始化