详解Java使用JDBC连接MySQL数据库

详解 Java 使用 JDBC 连接 MySQL 数据库

概述

在 Java 开发中,经常需要与 MySQL 数据库进行交互,而实现这个过程需要使用到 JDBC。JDBC(Java Database Connectivity)是 Java 提供的一套用于访问关系型数据库的接口,本文将详细讲解在 Java 中使用 JDBC 连接 MySQL 数据库的完整攻略。

步骤

1. 加载驱动程序

在使用 JDBC 连接 MySQL 数据库之前,需要先加载驱动程序,即将 JDBC 驱动程序加载到内存中,以便 Java 应用程序能够访问数据库。

Java8 以后,可以省略掉加载驱动的步骤,因为 JDBC 会自动加载驱动程序,不过为了兼容性,还是推荐显示加载驱动程序。

Class.forName("com.mysql.cj.jdbc.Driver");

2. 建立连接

与 MySQL 数据库建立连接需要连接的三个要素:URL、用户名和密码。

String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";
String user = "root";
String password = "root";
Connection connection = DriverManager.getConnection(url, user, password);

其中 url 的格式为 jdbc:mysql://host:port/databaseName,useUnicodecharacterEncoding 是用来解决中文乱码问题的,serverTimezone 的意义是时区设置,如果不设置可能会出现时区不一致的问题。

3. 执行 SQL 语句

连接成功后就可以执行 SQL 语句了,常见的 SQL 语句有增加、删除、修改和查询。

增加数据

String sql = "INSERT INTO users(name, age) VALUES(?,?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "张三");
ps.setInt(2, 25);
int result = ps.executeUpdate();

这里使用了 JDBC 预处理语句 PreparedStatement,使用 setStringsetInt 方法设置参数,executeUpdate 方法执行语句并返回受影响的行数。

删除数据

String sql = "DELETE FROM users WHERE name = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "张三");
int result = ps.executeUpdate();

这里使用了 PreparedStatement,使用 setString 方法设置参数,执行语句也是调用 executeUpdate 方法。

修改数据

String sql = "UPDATE users SET age = ? WHERE id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, 30);
ps.setInt(2, 1);
int result = ps.executeUpdate();

这里使用了 PreparedStatement,使用 setIntsetString 方法设置参数,执行语句也是调用 executeUpdate 方法。

查询数据

String sql = "SELECT * FROM users WHERE name = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "张三");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    int id = rs.getInt(1);
    String name = rs.getString(2);
    int age = rs.getInt(3);
    System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}

这里同样使用了 PreparedStatement,使用 setString 方法设置参数,执行语句使用 executeQuery 方法,并使用 ResultSet 对象遍历结果集,将结果集中的每条记录取出来并输出。

4. 关闭连接

完成 MySQL 数据库的访问后必须关闭连接。

if (connection != null) {
    connection.close();
}

示例

示例 1:增加数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class AddUserData {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url, user, password);

        String sql = "INSERT INTO users(name, age) VALUES(?,?)";
        PreparedStatement ps = connection.prepareStatement(sql);
        ps.setString(1, "李四");
        ps.setInt(2, 28);
        int result = ps.executeUpdate();
        System.out.println("成功插入 " + result + " 条记录");

        if (connection != null) {
            connection.close();
        }
    }
}

示例 2:查询数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class QueryUserData {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url, user, password);

        String sql = "SELECT * FROM users WHERE age > ?";
        PreparedStatement ps = connection.prepareStatement(sql);
        ps.setInt(1, 25);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            int id = rs.getInt(1);
            String name = rs.getString(2);
            int age = rs.getInt(3);
            System.out.println("id: " + id + ", name: " + name + ", age: " + age);
        }

        if (connection != null) {
            connection.close();
        }
    }
}

总结

本文详细讲解了在 Java 中使用 JDBC 连接 MySQL 数据库的完整攻略,并提供了两个示例,希望能够帮助大家更好地理解和运用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java使用JDBC连接MySQL数据库 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解使用spring validation完成数据后端校验

    下面是“详解使用Spring Validation完成数据后端校验”的完整攻略,包含了步骤、示例和代码段。 1. 什么是Spring Validation Spring Validation是Spring框架中提供的一种数据校验工具,可以用于对请求参数、表单数据等进行校验。它通过注解的方式在POJO类中定义校验规则,然后在Controller层中通过Vali…

    Java 2023年5月20日
    00
  • Java 仿天猫服装商城系统的实现流程

    Java 仿天猫服装商城系统的实现流程 概述 Java 仿天猫服装商城系统是一种基于Java语言实现的电商系统,主要用于展示服装商品,实现用户注册、登录、购物车、订单等基本功能的实验项目。在本文中,将详细介绍Java 仿天猫服装商城系统的实现流程。 技术栈 Java 仿天猫服装商城系统的实现需要掌握以下技术栈: Spring Boot:Java框架,用于快速…

    Java 2023年5月24日
    00
  • springboot使用消息中间件

    Spring Boot是一个快速构建应用程序的框架,它提供了许多常用的功能,如Web、数据访问、安全等。在Spring Boot中,我们可以使用消息中间件来实现异步通信,提高应用程序的性能和可伸缩性。以下是Spring Boot使用消息中间件的完整攻略: 添加消息中间件依赖 在Spring Boot中,我们可以使用Maven或Gradle来添加消息中间件依赖…

    Java 2023年5月15日
    00
  • 史上最牛的游戏2 第11关 详细图文攻略

    史上最牛的游戏2 第11关 详细图文攻略 关卡介绍 史上最牛的游戏2 第11关,是一款类似推箱子的益智游戏。玩家需要控制主角将兔子们推到相应的颜色区域,即可通过本关卡。但是,随着关卡的深入,游戏难度会不断升级,玩家需要不断思考才能顺利通关。 攻略步骤 步骤1:分析地图结构与兔子位置 首先,进入第11关后,需要先仔细地观察当前地图的结构和兔子们的初始位置。在第…

    Java 2023年5月26日
    00
  • java实现的连接数据库及模糊查询功能示例

    以下是详细的攻略: 连接数据库 Java连接数据库需要使用JDBC(Java Database Connectivity)技术,具体过程如下: 导入JDBC驱动程序。如果使用MySQL数据库,则需要下载相应的驱动。可以在MySQL官网 下载最新版本的JDBC驱动。 加载驱动程序。可以使用Class.forName()方法来加载驱动程序。 建立数据库连接。使用…

    Java 2023年5月19日
    00
  • springboot整合shardingjdbc实现分库分表最简单demo

    下面是一份完整的SpringBoot整合ShardingJDBC实现分库分表最简单demo的攻略: 一、前置条件 掌握SpringBoot和Maven的基础及配置方式; 了解什么是ShardingJDBC以及其分库分表的实现原理; 准备好使用的数据库及其账号密码。 二、添加依赖 在Maven的pom.xml文件中添加以下依赖: <dependency&…

    Java 2023年5月20日
    00
  • Java掩码的几种使用例举

    Java掩码的几种使用例举 在Java中,掩码的主要作用是用来过滤或者匹配不同的字节位。掩码是用位运算符来创建的。在Java中,我们可以使用按位与、或、异或等位运算符来创建掩码。 按位与掩码 按位与掩码是将每个位分别与操作数进行运算,返回新的结果。当操作数均为1的时候,该位的掩码返回1,否则返回0。在Java中,我们可以使用“&”符号来表示按位与掩码…

    Java 2023年5月29日
    00
  • Spring 整合 Hibernate 时启用二级缓存实例详解

    我会给出一个详细的“Spring 整合 Hibernate 时启用二级缓存实例详解”的攻略。在这个攻略中,我会从以下几个方面来进行阐述: 为什么在整合 Spring 和 Hibernate 时需要使用二级缓存? 什么是二级缓存?Spring 如何支持 Hibernate 的二级缓存? 如何在Spring 和Hibernate 中启用二级缓存? 通过两个示例来…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部