详解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 Shell 开发 Java 命令行应用

    通过Spring Shell开发Java命令行应用,可以帮助我们方便地搭建一个强大的命令行应用程序,可以实现命令解析、命令补全等功能。下面是通过Spring Shell开发Java命令行应用的完整攻略: 1. 添加依赖 首先,我们需要在pom.xml中添加必要的依赖,这些依赖包含Spring Shell框架、Spring Boot框架和其他相关依赖: &lt…

    Java 2023年6月2日
    00
  • Java多线程案例之阻塞队列详解

    Java多线程案例之阻塞队列详解 什么是阻塞队列? 阻塞队列(Blocking Queue)是一个支持在队列的两端进行插入与删除的队列。常用的阻塞队列有ArrayBlockingQueue、LinkedBlockingQueue等。阻塞队列在多线程的场景下常被使用,因为当队列为空或达到容量上限时,线程往往会被阻塞。在队列空的情况下,从队列中获取元素的操作将会…

    Java 2023年5月18日
    00
  • JNDI具体用法详解

    JNDI具体用法详解 什么是JNDI JNDI(Java Naming and Directory Interface)是Java提供的一种机制,用于在Java应用程序中查找各种命名和目录服务。JNDI通过统一的API接口来访问不同类型的命名和目录服务。 JNDI用途 JNDI通常被用于以下几个方面: 查找Java对象 查找资源 查找配置文件 查找邮件服务 …

    Java 2023年5月20日
    00
  • Java字符串 正则表达式详解

    来讲解一下“Java字符串正则表达式详解”的攻略吧。 Java字符串 正则表达式详解 什么是正则表达式? 正则表达式是一种通用的文本处理语言,它是用一种描述性的语言来描述一组字符串的集合,这个集合通常是某种字符序列。正则表达式用于快速地检索、替换那些符合某个模式的文本。其应用范围相当广泛,如文本编辑器、命令行工具、服务器端脚本等,也是Java中常用的操作字符…

    Java 2023年5月26日
    00
  • 关于页面刷新,事件重复提交的方法分享

    下面为您详细讲解“关于页面刷新,事件重复提交的方法分享”的完整攻略。 1. 前言 在网站的开发过程中,我们经常会遇到一些问题。其中之一就是重复提交,这种情况的出现是因为用户在提交数据后,可能会因为某些原因选择刷新页面或是重新提交,这会导致数据重复提交或页面出错。为了避免这种问题的发生,我们需要采取一些措施来防止页面刷新和事件重复提交。 2. 防止页面刷新 2…

    Java 2023年6月15日
    00
  • Spring Boot自动注入的原理分析

    SpringBoot自动注入的原理分析 在Spring Boot中,自动注入是一个非常重要的特性。它可以帮助我们更方便地管理Bean之间的依赖关系。在本攻略中,我们将详细讲解Spring Boot自动注入的原理分析。 1. 自动注入的原理 Spring Boot的自动注入是通过依赖注入(DI)实现的。在DI中,对象之间的依赖关系由容器负责管理。当一个对象需要…

    Java 2023年5月14日
    00
  • 基于Spring Security前后端分离的权限控制系统问题

    基于Spring Security前后端分离的权限控制系统是一个非常常见的开发需求。下面将提供完整攻略,从搭建环境、配置安全策略、实现权限控制等方面讲解该系统的具体实现。其中示例将分别展示两种不同的权限控制方式。 1. 搭建环境 首先,需要搭建一个Spring Boot项目,并且集成Spring Security。需要在项目中引入以下依赖: <depe…

    Java 2023年5月20日
    00
  • 使用Nexus搭建Maven私服的方法步骤

    使用Nexus搭建Maven私服可以帮助团队内部或者企业方便地管理Maven依赖,提高构建的可重复性和稳定性。下面我将为大家详细讲解使用Nexus搭建Maven私服的方法步骤: 一、环境要求 在安装和配置Nexus之前,确保已满足以下要求: Java 8或更高版本已安装并配置好JAVA_HOME环境变量。 为Nexus指定一个非root用户。 shell s…

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