用Java操作MySQL数据库

这篇具有很好参考价值的文章主要介绍了用Java操作MySQL数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

新建Maven项目

创建Maven项目

添加依赖

在pom.xml的标签里加上下面的内容
如果是MySQL 5.8那么的版本号是5.x.x, 例如5.1.49
如果是MySQL 8.0那么的版本号是8.x.x, 例如 8.0.28

<dependencies>

  <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
  </dependency>

</dependencies>

新建实体类

构建实体类, 类属性和表对应上, 方便来接收查询数据

举例

对于一个学生信息表

 CREATE TABLE student(
   id BIGINT,
   `name` VARCHAR(100),
   sn BIGINT,
   email VARCHAR(100),
   classId BIGINT
 )

新建学生类

public class Student {
    private int id;
    private String name;
    private long sn;
    private String email;
    private int classId;

    //记得自己加上toString()方法,和每个属性的getter和Setter方法
}

连接数据库查询内容

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.*;
import java.util.Scanner;

public class Demo01_Connection {
    //先定义数据源对象, 待会用这个数据源操作数据库
    //先定义一个名字, 待会再具体实现
    private static DataSource dataSource = null;

    //定义自己数据库的各种属性, 方便全局修改
    // 数据库的用户名
    private static final String USER = "root";
    // 数据库的密码
    private static final String PASSWORD = "123456";
    // 数据库连接字符串(针对MySQL5)	本机数据库ip就是"localhost", 端口默认3306
    private static final String URL = "jdbc:mysql://数据库服务ip:端口号/数据库名?characterEncoding=utf-8&useSSL=false";
    // 如果是MySQL 8则是下面(mysql 8要加时区设置)
    //private static final String URL = "jdbc:mysql://数据库服务ip:端口号/数据库名?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";

    public static void main(String[] args) {
        // 1. 初化始数据源,待会赋给上面定义的数据源
        MysqlDataSource myDataSource = new MysqlDataSource();
        
        // 2. 设置连接的参数
        myDataSource.setURL(URL);
        myDataSource.setUser(USER);
        myDataSource.setPassword(PASSWORD);
        
        // 3. 把构建好的Mysql数据源赋值给JDBC中的datasource
        dataSource = myDataSource;
        
        //下面三个声明在try{}之外,方便finally也能识别
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        
        try{
            //通过数据源获取一个数据库连接
            connection = dataSource.getConnection();
            
            //接收用户输入的值
            System.out.print("请输入姓名:");
            Scanner scanner = new Scanner(System.in);
            String sn = scanner.next();
            
            //定义SQL语句
            String sql = "select * from student where name = ?";
            
            // 获取一个预处理对象
            statement = connection.prepareStatement(sql);
            
            // 处理占位符的值,要匹配上类型,参数1代表第几个占位符,后者表示要被替换的内容
            statement.setString(1, sn);
            
            // 4. 执行SQL
            resultSet = statement.executeQuery();
            
            if (resultSet.next()) { //如果读取到了内容
                // 创建表示结果的JAVA对象
                Student student = new Student();
                student.setId(resultSet.getInt(1));
                student.setName(resultSet.getString(2));
                student.setSn(resultSet.getLong(3));
                student.setEmail(resultSet.getString(4));
                student.setClassId(resultSet.getInt(5));
                System.out.println(student);
            }
            
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            // 依次关闭资源,从后往前关
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

将一系列操作封装成工具类

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.*;

public class DBUtil {
    // 先定义一个数据源对象
    private static DataSource dataSource = null;
    // 数据库的用户名
    private static final String USER = "root";
    // 数据库的密码
    private static final String PASSWORD = "123456";
    // 数据库连接字符串
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/java78?characterEncoding=utf-8&useSSL=false";
    static {
        // 初始化数据源,类加载时运行
        MysqlDataSource mysqlDataSource = new MysqlDataSource();
        mysqlDataSource.setURL(URL);
        mysqlDataSource.setUser(USER);
        mysqlDataSource.setPassword(PASSWORD);
        dataSource = mysqlDataSource;
    }
    // 用private 修饰构造方法,使外部不能new 这个类的对象
    private DBUtil() {}
    //获取数据库连接
    public static Connection getConnection () throws SQLException {
        return dataSource.getConnection();
    }
    //关闭对象并释放资源
    public static void close (ResultSet resultSet, PreparedStatement statement, Connection connection) {
        // 依次关闭对象,并释放资源
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

使用方法

省略了设置数据源参数和关闭数据源的操作

public class Main{
    
	public static void main(String[] args) {
    	//声明三个对象
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            // 1. 创建数据源并获取数据库连接
            connection = DBUtil.getConnection();
            
            // 2. 构造SQL语句
            String sql = "select id, name, sn, email, classId from student order by id ASC";
            
            // 使用SQL预处理对象处理SQL
            statement = connection.prepareStatement(sql);
            
            // 3. 执行SQL并获取结果,如果是结果集把结果集转成java对象
            resultSet = statement.executeQuery();
            
            // 遍历结果集,处理查询到数据
            while (resultSet.next()) {
                Student student = new Student();
                student.setId(resultSet.getInt(1));
                student.setName(resultSet.getString(2));
                student.setSn(resultSet.getLong(3));
                student.setEmail(resultSet.getString(4));
                student.setClassId(resultSet.getInt(5));
            }
            // 打印结果
            System.out.println(student);
        
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 4. 释放资源
            DBUtil.close(resultSet, statement, connection);
        }
    }
}

接收多个查询结果

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class Demo02_SelectAll {
    public static void main(String[] args) {
        // 查询到的所有学生信息放在List里
        List<Student> students = null;
        
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        
        try {
            // 1. 创建数据源并获取数据库连接
            connection = DBUtil.getConnection();
            
            // 2. 构造SQL语句
            String sql = "select id, name, sn, email, classId from student order by id ASC";
            
            // 使用SQL预处理对象处理SQL
            statement = connection.prepareStatement(sql);
            
            // 3. 执行SQL并获取结果,如果是结果集把结果集转成java对象
            resultSet = statement.executeQuery();
            
            // 遍历结果集,处理查询到数据
            while (resultSet.next()) {
                // 如果List为空则创建
                if (students == null) {
                    students = new ArrayList<>();
                }
                
                // 解析结果集并封装成Student对象
                Student student = new Student();
                student.setId(resultSet.getInt(1));
                student.setName(resultSet.getString(2));
                student.setSn(resultSet.getLong(3));
                student.setEmail(resultSet.getString(4));
                student.setClassId(resultSet.getInt(5));
                
                // 加入到集合中
                students.add(student);
            }
            // 打印结果
            System.out.println(students);

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 4. 释放资源
            DBUtil.close(resultSet, statement, connection);
        }
    }
}

数据更改

如果你想update, 那么把SQL语句即可, 原理是相同的,基本不用改Java代码. 例如改成Update student set age=10 where name=?
查询时statement.executeQuery(), 设置是statement.executeUpdate()文章来源地址https://www.toymoban.com/news/detail-646084.html

import java.sql.*;
import java.util.Scanner;

public class Demo03_Delete {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement statement = null;

        try {
            // 1. 获取数据库连接
            connection = DBUtil.getConnection();
            
            // 2. 构建SQL
            String sql = "delete from student where name = ?";
            
            // 接收用户的输入
            System.out.print("请输入要删除的同学姓名:");
            Scanner scanner = new Scanner(System.in);
            String name = scanner.next();
            
            // 3. 对SQL进行处理,并替换占位符
            statement = connection.prepareStatement(sql);
            //替换参数: 1代表第一个问号, name代表填入的数据
            statement.setString(1, name);
            
            // 4. 执行SQL并获取结果
            int row = statement.executeUpdate();
            if (row <= 0) {
                System.out.println("删除失败.");
            } else {
                System.out.println("删除成功");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            DBUtil.close(null, statement, connection);
        }
    }
}

插入数据

import java.sql.*;
import java.util.Scanner;

public class Demo04_Insert {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement statement = null;

        try {
            // 1. 获取数据库连接
            connection = DBUtil.getConnection();
            
            
            // 2. 构建SQL
            String sql = "insert into student values (?, ?, ?, ?, ?)";

            
            // 接收用户的输入
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入要添加的同学Id:");
            int id = scanner.nextInt();
            // 姓名
            System.out.print("请输入学生的姓名:");
            String name = scanner.next();
            // 学号
            System.out.print("请输入学生的学号->");
            long sn = scanner.nextLong();
            // 邮箱
            System.out.print("请输入学生的邮箱->");
            String email = scanner.next();
            // 班级编号
            System.out.print("请输入学生的班级编号->");
            int classId = scanner.nextInt();

            
            // 3. 对SQL进行处理
            statement = connection.prepareStatement(sql);
            // 替换占位符
            statement.setInt(1, id);
            statement.setString(2, name);
            statement.setLong(3, sn);
            statement.setString(4, email);
            statement.setInt(5, classId);

            
            // 4. 执行SQL并获取结果
            int row = statement.executeUpdate();
            if (row <= 0) {
                System.out.println("添加失败.");
            } else {
                System.out.println("添加成功");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            DBUtil.close(null, statement, connection);
        }
    }
}

到了这里,关于用Java操作MySQL数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库

    代码讲解:6-点赞功能-定时持久化到数据库-pipeline+lua-优化pipeline_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代码: blogLike_schedule/like06 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like06 数据库表的

    2024年02月16日
    浏览(33)
  • springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库

    代码讲解: 3-点赞功能-定时持久化到数据库(pipeline+lua)-完善过程2_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1w14y1o7BV 本文章代码: blogLike_schedule/like03 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like03 数据

    2024年02月15日
    浏览(40)
  • springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库

    springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库 代码讲解:7.1点赞功能-定时持久化到数据库-Java整合lua_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1ZX4y1H7JT/ 代码: blogLike_schedule/like07 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee

    2024年02月13日
    浏览(37)
  • 完全从零Java自学系列【入门篇】(第四课:Mysql服务端安装&使用客户端操作数据库&初识SQL基础操作&Java中使用第三方包&Java数据库操作&初步理解面相对象真正的意义之桥接设计模式)

      数据库是专门用来存储一系列集合数据的地方。所有的文件都可以被称之为库,当应用场景没那么复杂的时候,简单的应用程序用文本就可以了。数据库的意义是为了设计更好的保障数据安全(如多线程操作)、数据一致、索引(如何在庞大的数据中快速查找)等等一系

    2024年02月21日
    浏览(45)
  • Java连接mysql数据库

    java连接mysql大致需要这六步: 导入驱动包 :这里我使用的是mysql-connector-java-8.0.17.jar( 点击下载 ),这个包连接mysql5.6,5.7,8.0版本都没问题。 Class.forName(\\\"com.mysql.cj.jdbc.Driver\\\"); url和账户名密码 JDBC连接串: jdbc:mysql://地址:端口/数据库 获取连接 : DriverManager.getConnection(url, user

    2024年02月02日
    浏览(40)
  • 【java】Java连接mysql数据库及mysql驱动jar包下载和使用

    基本概念:java 数据库连接,简称:( java DataBase Connectivity ),java语言操作数据库。 其实是官方(SUN公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码时驱

    2024年02月02日
    浏览(36)
  • Flink读取mysql数据库(java)

    代码如下: 运行结果如下:

    2024年02月12日
    浏览(31)
  • 【JDBC】Java连接MySQL数据库

    数据库编程指的是通过编程语言与数据库进行交互和操作的过程,包括使用编程语言创建、连接、查询、更新和删除数据库中的数据,以及管理数据库结构和其他相关工作等。 另外,不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包

    2024年02月15日
    浏览(41)
  • 【JAVA】MySQL数据库信息管理系统

    目录 前言 一、环境搭建 二、功能实现 1.商品信息类的创建 2.商品信息的查询 3.商品信息的添加 4.商品信息的修改 5.商品信息的删除 三、主类的调用 1.加载配置文件并获取数据库连接 2.界面的搭建 3.功能的选择 总结 JAVA实现的MySQL数据库信息管理系统 包含数据库的增删改查功

    2024年02月09日
    浏览(62)
  • idea实现Java连接MySQL数据库

    首先如果没有mysql的需要先下载MySQL,可以看这个教程: Mysql超详细安装配置教程(保姆级)_mysql安装及配置超详细教程-CSDN博客 官网:MySQL :: Download Connector/J 解压并将驱动jar包导入idea , 在Java项目中创建一个bin文件夹,然后把jar包Ctrl+C,V到bin文件夹   然后lib右键,点击Add as L

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包