自学内容网 自学内容网

JAVA |日常开发中连接Mysql数据库增删改查详解

在这里插入图片描述
在这里插入图片描述

JAVA |日常开发中连接Mysql数据库增删改查详解

  • 前言
  • 一、准备工作
    • 1.1 添加 MySQL JDBC 驱动依赖
    • 1.2 了解连接信息
  • 二、建立数据库连接
    • 2.1 代码示例
    • 2.2 步骤解析
  • 三、执行增删改操作(使用 Statement)
    • 3.1 插入数据(Insert)
    • 3.2 更新数据(Update)
    • 3.3 删除数据(Delete)
  • 四、执行查询操作(使用 Statement 和 ResultSet)
  • 五、使用 PreparedStatement(推荐)
    • 5.1 优势
    • 5.2 插入数据(Insert)示例
    • 5.3 查询数据(Query)示例
  • 结束语
  • 优质源码分享

JAVA |日常开发中连接Mysql数据库增删改查详解,在日常的Java开发中,连接MySQL数据库并执行增删改查(CRUD)操作是非常基础且重要的技能。本文将详细介绍如何在Java中连接MySQL数据库,以及如何进行数据的增加(Create)、读取(Read)、更新(Update)和删除(Delete)操作。

前言

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

一、准备工作

1.1 添加 MySQL JDBC 驱动依赖

    如果是 Maven 项目,需要在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql - connector - java</artifactId>
    <version>8.0.33</version>
</dependency>

    这使得 Java 项目能够通过 JDBC(Java Database Connectivity)与 MySQL 数据库进行通信。

1.2 了解连接信息

    主机地址和端口: MySQL 数据库服务器的位置,通常本地主机是localhost,默认端口是3306。
    数据库名称: 要连接并操作的具体数据库名称。
    用户名和密码: 用于验证用户身份,以获取访问数据库的权限。

二、建立数据库连接

2.1 代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLConnection {
    public static void main(String[] args) {
        try {
            // 加载MySQL JDBC驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立连接,假设数据库名为mydb,用户名是root,密码是password
            String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
            Connection connection = DriverManager.getConnection(url, "root", "password");
            System.out.println("成功连接到MySQL数据库");
            // 关闭连接
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

2.2 步骤解析

    加载驱动: Class.forName(“com.mysql.cj.jdbc.Driver”)用于加载 MySQL 的 JDBC 驱动。在较新的 JDBC 版本中,这一步骤可能不是必需的,但为了兼容性,通常还是会包含这一步。
    建立连接: 通过DriverManager.getConnection方法建立连接。连接字符串jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC中,jdbc:mysql://是协议和子协议,localhost:3306是主机地址和端口,mydb是数据库名称,useSSL=false表示不使用 SSL 加密(可根据实际情况设置),serverTimezone=UTC用于设置时区。

三、执行增删改操作(使用 Statement)

3.1 插入数据(Insert)

代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertData {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
            Connection connection = DriverManager.getConnection(url, "root", "password");
            Statement statement = connection.createStatement();
            String sql = "INSERT INTO users (name, age) VALUES ('John', 30)";
            int rowsAffected = statement.executeUpdate(sql);
            System.out.println("插入成功,影响的行数: " + rowsAffected);
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

步骤解析
    通过connection.createStatement()创建一个Statement对象,用于执行 SQL 语句。
executeUpdate方法用于执行插入数据的 SQL 语句,返回值是受影响的行数,在这里插入成功应该返回 1。

3.2 更新数据(Update)

代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateData {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
            Connection connection = DriverManager.getConnection(url, "root", "password");
            Statement statement = connection.createStatement();
            String sql = "UPDATE users SET age = 31 WHERE name = 'John'";
            int rowsAffected = statement.executeUpdate(sql);
            System.out.println("更新成功,影响的行数: " + rowsAffected);
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

步骤解析
    同样使用Statement对象的executeUpdate方法执行更新数据的 SQL 语句,这里是将名为John的用户年龄更新为 31,返回受影响的行数。

3.3 删除数据(Delete)

代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DeleteData {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
            Connection connection = DriverManager.getConnection(url, "root", "password");
            Statement statement = connection.createStatement();
            String sql = "DELETE FROM users WHERE name = 'John'";
            int rowsAffected = statement.executeUpdate(sql);
            System.out.println("删除成功,影响的行数: " + rowsAffected);
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

步骤解析
    使用Statement对象的executeUpdate方法执行删除数据的 SQL 语句,这里是删除名为John的用户记录,返回受影响的行数。

四、执行查询操作(使用 Statement 和 ResultSet)

代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class QueryData {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
            Connection connection = DriverManager.getConnection(url, "root", "password");
            Statement statement = connection.createStatement();
            String sql = "SELECT * FROM users";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

步骤解析
    通过executeQuery方法执行查询语句,返回一个ResultSet对象,用于存储查询结果。
    while (resultSet.next())循环遍历ResultSet,next方法用于移动到下一行记录。
使用getInt、getString等方法获取每一行中指定列的数据,这里获取了id、name和age列的数据并打印出来。

五、使用 PreparedStatement(推荐)

5.1 优势

    防止 SQL 注入攻击:PreparedStatement 会对输入参数进行预编译,将 SQL 语句的结构和参数分开处理,有效地防止了 SQL 注入攻击。
    提高性能:对于多次执行的 SQL 语句,PreparedStatement 只需要编译一次,后续执行时直接使用编译好的语句,提高了执行效率。

5.2 插入数据(Insert)示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertDataWithPreparedStatement {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
            Connection connection = DriverManager.getConnection(url, "root", "password");
            String sql = "INSERT INTO users (name, age) VALUES (?,?)";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "Alice");
            preparedStatement.setInt(2, 25);
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println("插入成功,影响的行数: " + rowsAffected);
            preparedStatement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

    这里的sql语句中的?是参数占位符,通过setString和setInt方法设置参数的值,然后执行executeUpdate方法插入数据。更新和删除操作也可以类似地使用 PreparedStatement。

5.3 查询数据(Query)示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class QueryDataWithPreparedStatement {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
            Connection connection = DriverManager.getConnection(url, "root", "password");
            String sql = "SELECT * FROM users WHERE name =?";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "Alice");
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }
            resultSet.close();
            preparedStatement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

    同样使用参数占位符,设置查询条件,然后执行executeQuery方法获取结果集并进行处理。

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------
 

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有)https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144188871(防止抄袭,原文地址不可删除)


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144188871

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!