java通过JDBC连接mysql8.0数据库,并对数据库中的表进行增删改查操作

2023-11-07

目录

一、JDBC简介

二、添加依赖

三、JDBC操作数据库的步骤

四、JDBC操作数据库——增删改查

(一)新增数据

(二)删除数据

(三)修改数据

(四)查询数据

(五)多表连接查询


一、JDBC简介

        Java数据库连接,(Java Database Connectivity,简称JDBC)是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法,我们通常说的JDBC是面向关系型数据库的。

二、添加依赖

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

三、JDBC操作数据库的步骤

注意:在使用JDBC之前要保证数据库远程连接服务启动!

1.Class.forName()加载驱动

2.DriverManager获取Connection连接

3.创建Statement执行SQL语句

4.增删改操作使用preparedStatement.executeUpdate();返回影响的行数

   查询操作使用preparedStatement.executeQuery();返回查询结果

5.释放资源

四、JDBC操作数据库——增删改查

首先创建表:

create table if not exists dog
(
    id int(10) primary key auto_increment,
    name varchar(32) comment '宠物名',
    health int(10) comment '健康值',
    love int(10) comment '亲密度',
    strain varchar(32) comment '品种',
    lytime datetime comment '领养时间'
);

(一)新增数据

package jdbcstu;

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

public class Dog {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
//        com.mysql.jdbc.Driver
            // 第一步:加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 第二步:获取Connection对象
            connection = DriverManager.getConnection(
                    "jdbc:mysql://192.168.180.141:3306/jdbcstudb", // mysql服务器地址,端口,数据库名
                    "root", // 数据库的用户名
                    "root" // 数据库密码
            );
            System.out.println(connection);
            // 第三步:操作数据库 增删改查
            /*新增*/
//          String sql = "insert into dog(name,health,love,strain,lytime) values(?,?,?,?,?)";
            String sql = "insert into dog(name,health,love,strain,lytime) values(?,?,?,?,now())";
            String name = "ggg";
            Integer health = 92;
            Integer love = 66;
            String strain = "斗牛";
//          Date date = new Date(System.currentTimeMillis());// 只能存年月日

            // 第三步:创建preparedstatement
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1,name);
            preparedStatement.setInt(2,health);
            preparedStatement.setInt(3,love);
            preparedStatement.setString(4,strain);
//            preparedStatement.setDate(5,date);

            // 第四步:获取到执行新增语句后的返回结果
            int num = preparedStatement.executeUpdate(); // 返回影响的行数
            if(num > 0){
                System.out.println("新增宠物狗成功!");
            }
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 第五步:释放资源
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

(二)删除数据

package jdbcstu;

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

public class Dog {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
//        com.mysql.jdbc.Driver
            // 第一步:加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 第二步:获取Connection对象
            connection = DriverManager.getConnection(
                    "jdbc:mysql://192.168.180.141:3306/jdbcstudb", // mysql服务器地址,端口,数据库名
                    "root", // 数据库的用户名
                    "root" // 数据库密码
            );
            System.out.println(connection);
            // 第三步:操作数据库 增删改查
            String sql = "delete from dog where name = ? and health = ?";
            preparedStatement = connection.prepareStatement(sql);
            String name = "ggg";
            Integer health = 92;
            preparedStatement.setString(1,name);
            preparedStatement.setInt(2,health);
            int num = preparedStatement.executeUpdate();
            if(num>0){
                System.out.println("删除成功!"+num);
            }
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 第五步:释放资源
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

(三)修改数据

package jdbcstu;

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

public class Dog {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
//        com.mysql.jdbc.Driver
            // 第一步:加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 第二步:获取Connection对象
            connection = DriverManager.getConnection(
                    "jdbc:mysql://192.168.180.141:3306/jdbcstudb", // mysql服务器地址,端口,数据库名
                    "root", // 数据库的用户名
                    "root" // 数据库密码
            );
            System.out.println(connection);
            // 第三步:操作数据库 增删改查
            String sql = "update dog set name = ?,health = ?,love = ? where id = ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1,"二哈");
            preparedStatement.setInt(2,99);
            preparedStatement.setInt(3,80);
            preparedStatement.setInt(4,2);
            int num = preparedStatement.executeUpdate();
            if(num > 0){
                System.out.println("修改宠物狗成功!");
            }
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 第五步:释放资源
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

(四)查询数据

package jdbcstu;

import java.sql.*;

public class Dog {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
//        com.mysql.jdbc.Driver
            // 第一步:加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 第二步:获取Connection对象
            connection = DriverManager.getConnection(
                    "jdbc:mysql://192.168.180.141:3306/jdbcstudb", // mysql服务器地址,端口,数据库名
                    "root", // 数据库的用户名
                    "root" // 数据库密码
            );
            System.out.println(connection);
            // 第三步:操作数据库 增删改查
            String sql = "select id,name,health,love,strain,lytime from dog where health = ? and strain = ? limit ?,?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1,99);
            preparedStatement.setString(2,"哈士奇");
            preparedStatement.setInt(3,0);
            preparedStatement.setInt(4,2);
            resultSet = preparedStatement.executeQuery();
            System.out.println("\t\t\t狗狗信息");
            System.out.println("编号\t宠物名\t健康值\t亲密度\t品种\t\t领养时间");
            while (resultSet.next()){
                System.out.print(resultSet.getInt("id")+"\t");
                System.out.print(resultSet.getString("name")+"\t\t");
                System.out.print(resultSet.getInt("health")+"\t\t");
                System.out.print(resultSet.getInt("love")+"\t\t");
                System.out.print(resultSet.getString("strain") + "\t\t");
                System.out.println(resultSet.getDate("lytime")+"\t");
            }
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 第五步:释放资源
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
                if (connection != null) {
                    connection.close();
                }
                if(resultSet != null){
                    resultSet.close();
                }
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

(五)多表连接查询

package jdbcstu;

import java.sql.*;

public class Master {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            // 第一步:加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 第二步:获取connection对象
            connection = DriverManager.getConnection(
                    "jdbc:mysql://192.168.180.141:3306/jdbcstudb",
                    "root",
                    "root"
            );
            System.out.println(connection);
            // 第三步:操作数据库 增删改查
            /*查询数据*/
            String sql = "select m.name ,\n" +
                    "       m.age ,\n" +
                    "       m.gender ,\n" +
                    "       m.yearnum ,\n" +
                    "       d.name ,\n" +
                    "       d.health ,\n" +
                    "       d.love \n" +
                    "       from master m\n" +
                    "join dog d on m.did = d.id\n" +
                    "where m.age > ?\n" +
                    "order by d.id desc\n" +
                    "limit ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1,30);
            preparedStatement.setInt(2,2);
            resultSet = preparedStatement.executeQuery();
            System.out.println("\t\t\t领养信息");
            System.out.println("主人姓名\t主人年龄\t主人性别\t主人经验值\t宠物名\t宠物健康值\t宠物亲密度");
            while (resultSet.next()){
                System.out.print(resultSet.getString("m.name")+"\t\t");
                System.out.print(resultSet.getInt("m.age")+"\t\t");
                System.out.print(resultSet.getString("m.gender")+"\t\t");
                System.out.print(resultSet.getInt("m.yearnum") + "\t\t\t");
                System.out.print(resultSet.getString("d.name")+"\t\t");
                System.out.print(resultSet.getInt("d.health")+"\t\t\t");
                System.out.println(resultSet.getInt("d.love")+"\t\t");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
           try {
                if (connection != null) {
                    connection.close();
                }
                if(preparedStatement != null){
                    preparedStatement.close();
                }
                if(resultSet != null){
                    resultSet.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java通过JDBC连接mysql8.0数据库,并对数据库中的表进行增删改查操作 的相关文章

  • Spring中的ProxyFactoryBean

    有人可以解释一下吗代理工厂Bean http static springsource org spring docs current javadoc api org springframework aop framework ProxyFa
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • 确定序列化对象的类型

    我需要通过套接字发送消息 从用户到引擎的请求 以及从引擎到用户的响应 所以流程本质上是 serialized request Server lt network gt Client serialized response request r
  • Java:SortedMap、TreeMap、可比较?如何使用?

    我有一个对象列表 需要根据其中一个字段的属性进行排序 我听说 SortedMap 和 Comparator 是实现此目的的最佳方法 我是否要与正在排序的类实现 Comparable 还是创建一个新类 如何实例化 SortedMap 并传入
  • Struts 1 到 Spring 迁移 - 策略

    我有一个legacy银行应用程序编码为Struts 1 JSP现在的要求是迁移后端 目前为 MVC to Springboot MVC 后续UI JSP 将迁移到angular Caveats 1 后端不是无状态的 2 会话对象中存储了大量
  • 如何在 JPA 和 Hibernate 中将数据库生成的列值定义为只读字段?

    使用 MariaDB 10 2 可以定义日期时间的默认值 例如创建和最后修改 我应该如何将此列作为只读字段访问 因为这个值应该只在数据库的控制之下 并且不应该从代码中修改 但我想在代码中读取这个属性 这很简单 只需设置insertable
  • JUNIT 测试 void 方法

    我有一个充满 void 方法的 java 类 我想进行一些单元测试以获得最大的代码覆盖率 例如我有这个方法 protected static void checkifValidElements int arg1 int arg2 metho
  • 在 java 中运行外部应用程序但不要等待它完成

    我正在用java编写一个应用程序 允许我运行其他应用程序 为此 我使用了 Process 类对象 但当我这样做时 应用程序会等待进程结束 然后再退出 有没有办法在 Java 中运行外部应用程序 但不等待它完成 public static v
  • 嵌套字段的 Comparator.comparing(...)

    假设我有一个这样的域模型 class Lecture Course course getters class Course Teacher teacher int studentSize getters class Teacher int
  • 如何使用第二行中的值填充第一行中的空值?

    我正在尝试编写一个查询 仅显示每个名称的第一行 但这些行的标题为空 因此我想从紧邻的下一行中提取它们的标题 table1 Name Title Row Dan NULL 1 Dan Engineer 2 Dan Developer 3 Ja
  • 如何从intellij项目视图中隐藏不必要的文件?

    给定一个示例 gradle 项目 其项目结构如下所示 正如你所看到的 有很多东西你实际上不需要在想法中看到 但你需要它们存在 我知道下面被忽略的文件 文件夹类型Editor File Types但这些正在影响库和项目 idea 会在各处忽略
  • 如何在 O(n) 时间内根据 Map 中的整数值相对于其他值随机选择一个键?

    如果我们有一个Map
  • javax.media.jai 类的公共下载?

    这是一个非常简单的问题 我一直在寻找可以下载 javax media jai 库的地方 我找到了 jai imageio 库 但是我发现的所有其他 jai 内容要么已经过时 2008 年及之前 然后我遇到了登录屏幕 是否有 javax me
  • 创建日期范围表

    我正在编写一份需要显示每天值的报告 我有查询的开始日期和结束日期 但我希望避免丢失日期 以防表不包含特定日期的值 我正在考虑创建一个基本日期范围表 其中包含开始和结束之间的所有日期 然后将其与数据表左连接以显示每一天的值 我找到了一些适用于
  • java.lang.IllegalStateException - 提交响应后无法创建会话

    我在我的项目中使用 JSF PrimeFaces 我为此准备了一个Maven项目 当我编译项目并加载主页后 我收到以下异常 java lang IllegalStateException Cannot create a session af
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 在实现使用原始类型的接口时如何避免警告?

    我正在实施流程工厂 http help eclipse org ganymede index jsp topic org eclipse platform doc isv reference api org eclipse debug co
  • mybatis:使用带有 XML 配置的映射器接口作为全局参数

    我喜欢使用 XML 表示法来指定全局参数 例如连接字符串 我也喜欢 Mapper 注释 当我尝试将两者结合起来时 我得到这个例外 https stackoverflow com questions 4263832 type interfac
  • java中void的作用是什么?

    返回类型 方法返回值的数据类型 如果方法不返回值 则返回 void http download oracle com javase tutorial java javaOO methods html http download oracle

随机推荐

  • Java中交集、并集、差集、补集、去重的实现

    一 交集 1 交集的实现 交集 Test public void intersection 向集合中添加元素 ArrayList
  • windows10 系统默认备份后如何还原?

    在控制面板中 如下操作 选着开始系统还原 选着备份的还原文件
  • UVA12166 Equilibrium Mobile

    VJ传送门 一道思维题 刚开始看的时候没什么思路 在博客园上参考了大佬的解析 在这里总结一下 一 分析 这道题要求让天平平衡所需要的最小改动次数 至少有一个不变 我们可以先选定一个不变的基准 然后改变其他的秤砣 得到以此为基准的天平的总重量
  • 大数据毕业设计 opencv指纹识别系统 - python 图像识别

    文章目录 0 前言 1 课题背景 2 效果展示 3 具体实现 3 1 图像对比过滤 3 2 图像二值化 3 3 图像侵蚀细化 3 4 图像增强 3 5 特征点检测 4 OpenCV 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升
  • 使用Map报错:错误 C2678 二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)

    在 C 中 使用Map时出现了这个问题 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2678 二进制 lt 没有找到接受 const Ty 类型的左操作数的运算符 或没有可接受的转换 QtWidgetsApplication1
  • pwn新手安装Ubuntu16.0.4踩雷

    为了能够实现更好的打pwn的目的 在大佬的建议下 将pwn环境换成了Ubuntu16 0 4 但是在安装的过程中产生了许多问题 导致重装过不知道多少遍虚拟机 这里写篇记录一下 防止忘记233333 步骤链接 27条消息 Pwn环境配置 三
  • java基础

    1 1 关键字与保留字 关键字 keyword 的定义和特点 gt 定义 被Java语言赋予了特殊含义 用做专门用途的字符串 单词 gt 特点 关键字中所有字母都为小写 gt 官方地址 https docs oracle com javas
  • .NET Core中使用Redis和Memcached的序列化问题

    为什么get set不直接操作对象 而需要序列化 是因为可以提高对数据库操作的执行效率 学习网址https www cnblogs com catcher1994 p 8543711 html
  • Rider 使用

    下载地址 http www jetbrains com rider fromMenu 破解 https www iteblog com archives 1542 html http idea iteblog com key php 使用
  • 约瑟夫环问题(单循环链表实现)

    用单循环链表解决约瑟夫环问题 大致思路 1 利用尾插法建立一个循环链表 建表成功后删除头结点 2 核心算法 生成一个work指针 每走到约定的step 1的位置时停止 利用pdel指针标记后继结点 循环释放pdel 直到work work
  • java数组(二)

    数组 Arrays 数组是一种数据结构 它是一组相同类型的元素的集合 该集合中的每个元素都通过一个索引访问 在Java中 数组是一个对象 它可以存储在堆上或栈上 具体取决于它如何创建 数组可以是单维数组或多维数组 数组是一个固定长度的数据结
  • C++(基础入门笔记)

    1搭建环境 include
  • TCP/IP/UDP/RTP/RTCP协议

    IP 指定目的地址和源地址 Version 版本号 四个字节 IHL IP Header Length IP头长度 Total Length 总的长度 总的长度减去IP头长度 数据长度 Identification Flags Fragme
  • linux OSI七层模型、TCP/IP协议栈及每层结构大揭秘

    学习Linux 就算是像小编我这样的小萌新 也知道OSI模型 什么 你不知道 好吧 这篇秘籍拿走 不谢 一 两个协议 1 OSI 协议模型 7层 国际协议 PDU 协议数据单元对等层次之间传递的数据单位 OSI协议 7层 国际协议 PDU
  • 伺服控制-canopen

    通迅中断参数设 1 中断 停止 伺服驱动 电机停转 开启抱死动作 1 配置 opration 2 设置 3速度模式 3 设置 伺服松轴 4 设置 伺服使能 运行 1 使能 true 2 启用 true 停止 1 使能 false 2 松轴
  • Linux下安装Nginx服务并设置开机自启动

    目录 一 安装Nginx 二 开机自启动服务配置 一 安装Nginx 系统平台 CentOS Linux release 7 9 2009 Core 64位 Nginx安装版本 liunx 64位 nginx 1 20 2 tar gz 安
  • VSCode进行Lua调试

    1 安装EmmyLua 2 添加配置 3 开始调试 要选择要调试的进程就可以了
  • Docker中快速搭建SFTP

    1 拉docker镜像 docker pull atmoz sftp 2 初始化 创建容器 docker run name internalsftp p 22 22 d atmoz sftp anonymous hello123 opt U
  • 震惊~Signal <XXX> missing in the sensitivity list is added for synthesis purposes在verilog中警告的解决方法

    你是否还在为秃头而烦恼 你是否还在通宵为了赶项目而焦急 朋友 你不是 一个人 看看吧 下面是这个bug的描述 WARNING HDLCompiler 91 F FPGA Doc AD test uart v Line 56 Signal
  • java通过JDBC连接mysql8.0数据库,并对数据库中的表进行增删改查操作

    目录 一 JDBC简介 二 添加依赖 三 JDBC操作数据库的步骤 四 JDBC操作数据库 增删改查 一 新增数据 二 删除数据 三 修改数据 四 查询数据 五 多表连接查询 一 JDBC简介 Java数据库连接 Java Database