Java-JDBC操作MySQL

news2024/11/16 2:46:58

Java-JDBC操作MySQL

文章目录

  • Java-JDBC操作MySQL
    • 一、Java-JDBC-MySQL的关系
    • 二、创建连接
    • 三、登录MySQL
    • 四、操作数据库
      • 1、返回型操作
      • 2、无返回型操作
    • 练习题目及完整代码

一、Java-JDBC-MySQL的关系

调用
操作
返回
JAVA
JDBC库
MySQL

二、创建连接

首先在MySQL官网下载一个jar包,然后导入编译器中,然后导入。

通过官方文档,在MySQL8.0以后,连接的地址为com.mysql.cj.jdbc.Driver,地址需要添加代码serverTimezone=UTC

这里创建一个DBHelper工具类,将这两个参数设为常量便于使用。

class DBHelper {
    final static String className = "com.mysql.cj.jdbc.Driver";
    final static String mysqladdress = "jdbc:mysql://localhost:3306/java?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=TRUE";
    }

其中localhost为地址,3306为端口,java是数据库名称

三、登录MySQL

有了指定的地址,还需要用户和密码才能登录数据库。为了安全,此处不使用root用户,采用新开一个账户来进行对数据库的操作。

create user 'java'@'localhost' identified by '123456';
grant all on java to 'java'@'localhost';

同样定义常量存储用户名和密码。

private String user, psw;

通过构造函数来对user和psw变量赋值。

DBHelper(String user, String psw) {
        this.user = user;
        this.psw = psw;
    }

四、操作数据库

有了地址、用户、密码,就可以登录数据库进行操作,在此之前,需要先实例化Connection类和Statement类,并在try-catch语句中创建对数据库的连接和数据传递。

Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            }catch (Exception e) {
            e.printStackTrace();
        }

连接好数据库之后,就可以使用SQL语句对数据库进行操作。

1、返回型操作

定义一个SQL语句在String中,实例化一个ResultSet,并使用statement传输SQL命令。由于select语句是有返回值的,所以使用executeQuery类型进行返回。

String sql = "select * from teacher";
ResultSet resultSet = statement.executeQuery(sql);

由于select的返回可能不止一条数据,所以使用while循环,调用resultSet中的next()函数,用于判断是否还有数据返回。然后使用resultSet中的get函数,获取字段内容。

 while (resultSet.next()) {
                String tid = resultSet.getString("tid");
                String tname = resultSet.getString("tname");
                String sex = resultSet.getString("sex");
                int age = resultSet.getInt("age");
                String professional_title = resultSet.getString("professional_title");
                int basic_salary = resultSet.getInt("basic_salary");
                System.out.print("tid:" + tid + "\t");
                System.out.print("tname:" + tname + "\t");
                System.out.print("sex:" + sex + "\t");
                System.out.print("age:" + age + "\t");
                System.out.print("professional_title:" + professional_title + "\t");
                System.out.println("basic_salary:" + basic_salary);
            }

最后操作完毕,关闭对象释放内存即可。

resultSet.close();
statement.close();
connection.close();

返回型操作完整代码:

  Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            String sql = "select * from teacher";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String tid = resultSet.getString("tid");
                String tname = resultSet.getString("tname");
                String sex = resultSet.getString("sex");
                int age = resultSet.getInt("age");
                String professional_title = resultSet.getString("professional_title");
                int basic_salary = resultSet.getInt("basic_salary");
                System.out.print("tid:" + tid + "\t");
                System.out.print("tname:" + tname + "\t");
                System.out.print("sex:" + sex + "\t");
                System.out.print("age:" + age + "\t");
                System.out.print("professional_title:" + professional_title + "\t");
                System.out.println("basic_salary:" + basic_salary);
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

2、无返回型操作

与有返回操作一致,需要先对数据库建立通讯。

Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            } catch (Exception e) {
            e.printStackTrace();
        }

然后使用sql语句代码,这里以insert into语句为例。使用executeUpdate函数进行操作,由于没有返回值,直接使用statement进行操作后即可。

String sql = "insert into teacher(tid,tname,sex,age,professional_title,basic_salary) values('19G00001','靳小翠','女',38,'教授',16000)";
statement.executeUpdate(sql);

最后也是需要关闭对象。

无返回型操作完整代码:

        Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            String sql = "insert into teacher(tid,tname,sex,age,professional_title,basic_salary) values('19G00001','靳小翠','女',38,'教授',16000)";
            statement.executeUpdate(sql);
            connection.close();
            statement.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

练习题目及完整代码

题目:
题目
完整代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

class DBHelper {
    final static String className = "com.mysql.cj.jdbc.Driver";
    final static String mysqladdress = "jdbc:mysql://localhost:3306/java?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=TRUE";
    private String user, psw;
    DBHelper(String user, String psw) {
        this.user = user;
        this.psw = psw;
    }
    public void show_table() {
        Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            String sql = "select * from book";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String bid = resultSet.getString("bid");
                String bname = resultSet.getString("bname");
                String author = resultSet.getString("author");
                double price = resultSet.getDouble("price");
                String press = resultSet.getString("press");
                String type = resultSet.getString("type");
                System.out.print("bid:" + bid + "\t");
                System.out.print("bname:" + bname + "\t");
                System.out.print("author:" + author + "\t");
                System.out.print("price:" + price + "\t");
                System.out.print("press:" + press + "\t");
                System.out.println("type:" + type);
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void change_data() {
        Connection connection;
        Statement statement;
        Statement statement1;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement1 = connection.createStatement();
            statement = connection.createStatement();
            String sql = "select press from book";
            String sql_professior = "update book set price=price*1.1";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String bookname = resultSet.getString("press");
                if (bookname.equals("清华大学出版社")) {
                    statement1.executeUpdate(sql_professior);
                }
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            show_table();
        }
    }
    public void sort() {
        Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            String sql = "select * from book order by price DESC";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String bid = resultSet.getString("bid");
                String bname = resultSet.getString("bname");
                String author = resultSet.getString("author");
                double price = resultSet.getDouble("price");
                String press = resultSet.getString("press");
                String type = resultSet.getString("type");
                System.out.print("bid:" + bid + "\t");
                System.out.print("bname:" + bname + "\t");
                System.out.print("author:" + author + "\t");
                System.out.print("price:" + price + "\t");
                System.out.print("press:" + press + "\t");
                System.out.println("type:" + type);
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void del() {
        Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            String sql = "delete from book where price<50 ";
            statement.executeUpdate(sql);
            connection.close();
            statement.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        show_table();
    }
    public void add() {
        Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            String sql = "insert into book(bid,bname,author,price,press,type) values('b00006','数据结构','严蔚敏',48,'清华大学出版社','科学类')";
            statement.executeUpdate(sql);
            connection.close();
            statement.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        show_table();
    }
    public void statistics() {
        Connection connection;
        Statement statement;
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(mysqladdress, user, psw);
            statement = connection.createStatement();
            String sql = "select * from book where press<(select avg(press) from book);";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String bid = resultSet.getString("bid");
                String bname = resultSet.getString("bname");
                String author = resultSet.getString("author");
                double price = resultSet.getDouble("price");
                String press = resultSet.getString("press");
                String type = resultSet.getString("type");
                System.out.print("bid:" + bid + "\t");
                System.out.print("bname:" + bname + "\t");
                System.out.print("author:" + author + "\t");
                System.out.print("price:" + price + "\t");
                System.out.print("press:" + press + "\t");
                System.out.println("type:" + type);
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
public class sql {
    static final String name = "java";
    static final String psw = "123456";

    public static void main(String[] args) {
        DBHelper dbHelper = new DBHelper(name, psw);
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("1、打印数据\n2、增加工资\n3、排序\n4、删除数据\n5、添加数据\n6、筛选数据");
            int choose = scanner.nextInt();
            switch (choose) {
                case 1:
                    dbHelper.show_table();
                    break;
                case 2:
                    dbHelper.change_data();
                    break;
                case 3:
                    dbHelper.sort();
                    break;
                case 4:
                    dbHelper.del();
                    break;
                case 5:
                    dbHelper.add();
                    break;
                case 6:
                    dbHelper.statistics();
                    break;
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1299493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud Alibaba及其Nacos初学习

目录 1、Spring Cloud Alibaba是什么 2、Spring Cloud 微服务体系​ 3、Nacos 3.1 Nacos概述 3.2 下载nacos 3.3 解压nacos 3.4 配置文件properties和sql 3.5 访问web管理页面 4、Spring Cloud整合Nacos 4.1 nacos创建命名空间namespace 4.2 配置管理 4.3 Spring C…

记一次堆内外内存问题的排查和优化

为优化淘宝带宽成本&#xff0c;我们在网关 SDK&#xff08;Java&#xff09;统一使用 ZSTD 替代 GZIP 压缩以获取更高的压缩比&#xff0c;从而得到更小的响应包。具体实现采用官方推荐的 zstd-jni 库。zstd-jni 会调用 zstd 的 c 库。 背景 在性能压测和优化过程中&#xff0…

错题总结(四)

1.【一维数组】输入10个整数&#xff0c;求平均值 编写一个程序&#xff0c;从用户输入中读取10个整数并存储在一个数组中。然后&#xff0c;计算并输出这些整数的平均值。 int main() {int arr[10];int sum 0;for (int n 0; n < 10; n){scanf("%d", &arr…

数据库连接池Druid

在 Spring Boot 项目中&#xff0c;数据库连接池已经成为标配&#xff0c;然而&#xff0c;我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中&#xff0c;我们将探讨数据库连接池&#xff0c;深入解析其实现机…

c语言:理解和避免野指针

野指针的定义&#xff1a; 野指针是指一个指针变量存储了一个无效的地址&#xff0c;通常是一个未初始化的指针或者指向已经被释放的内存地址。当程序尝试使用野指针时&#xff0c;可能会导致程序崩溃、内存泄漏或者其他不可预测的行为。因此&#xff0c;在编程中需要特别注意…

MEMS制造的基本工艺介绍——晶圆键合

晶圆键合是一种晶圆级封装技术&#xff0c;用于制造微机电系统 (MEMS)、纳米机电系统 (NEMS)、微电子学和光电子学&#xff0c;确保机械稳定和气密密封。用于 MEMS/NEMS 的晶圆直径范围为 100 毫米至 200 毫米&#xff08;4 英寸至 8 英寸&#xff09;&#xff0c;用于生产微电…

实用篇 | 3D建模中Blender软件的下载及使用[图文详情]

本文基于数字人系列的3D建模工具Blender软件的安装及使用&#xff0c;还介绍了图片生成3D模型的AI工具~ 目录 1.Blender的下载 2.Blender的使用 3.安装插件(通过压缩包安装) 4.实例 4.1.Blender使用MB-Lab插件快速人体模型建构 4.1.1.点击官网&#xff0c;进行下载 4.1.…

Mybatis、Mybatis整合Spring的流程图

Mybatis 注意MapperProxy里面有invoke方法&#xff0c;当进到invoker方法会拿到 二、mybatis整合Spring 1、当我们的拿到的【Dao】其实就是【MapperProxy】&#xff0c;执行Dao的方法时&#xff0c;会被MapperProxy的【Invoke方法拦截】 2、图上已经标注了MapperProxy包含哪些…

深入理解 Go Channel:解密并发编程中的通信机制

一、Channel管道 1、Channel说明 共享内存交互数据弊端 单纯地将函数并发执行是没有意义的。函数与函数间需要交互数据才能体现编发执行函数的意义虽然可以使用共享内存进行数据交换&#xff0c;但是共享内存在不同的goroutine中容易发送静态问题为了保证数据交换的正确性&am…

基于ssm应急资源管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本应急资源管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

入门Redis学习总结

记录之前刚学习Redis 的笔记&#xff0c; 主要包括Redis的基本数据结构、Redis 发布订阅机制、Redis 事务、Redis 服务器相关及采用Spring Boot 集成Redis 实现增删改查基本功能 一&#xff1a;常用命令及数据结构 1.Redis 键(key) # 设置key和value 127.0.0.1:6379> set …

bc-linux-欧拉重制root密码

最近需要重新安装虚拟机的系统 安装之后发现对方提供的root密码不对&#xff0c;无法进入系统。 上网搜了下发现可以进入单用户模式进行密码修改从而重置root用户密码。 在这个界面下按e键 找到图中部分&#xff0c;把标红的部分删除掉&#xff0c;然后写上rw init/bin/…

webpack学习-3.管理输出

webpack学习-3.管理输出 1.简单练手2.设置 HtmlWebpackPlugin3.清理 /dist 文件夹4.manifest5.总结 1.简单练手 官网的第一个预先准备&#xff0c;是多入口的。 const path require(path);module.exports {entry: {index: ./src/index.js,print: ./src/print.js,},output: …

unity 模型生成PNG图片并导出(可以任意控制方向和大小,本文提供三种方案)

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、插件RuntimePreviewGenerator&#xff08;方案一&#xff09;二、unity 官方提供的接口&#xff08;方案二&#xff09;三、方法三&#xff0c;可以处理单个模型&#xff0c;也…

“HALCON error #2454:HALCON handle was already cleared in operator set_draw“

分析&#xff1a;错误提示是窗口句柄已经被删除&#xff0c;这是因为前边的一句 HOperatorSet.CloseWindow(hWindowControl1.HalconWindow); 关掉了窗口&#xff0c;屏蔽或删除即可。

基于PLC的污水处理控制系统的设计(论文+源码)

1.系统设计 污水由进水系统通过粗格栅和清污机进行初步排除大块杂质物体以及漂浮物等&#xff0c;到达除砂池中。在除砂池系统中细格栅进一步净化污水中的细小颗粒物体&#xff0c;将污水中的细小沙粒滤除后进入氧化沟反应池。在该氧化沟系统中进行生化处理&#xff0c;分解污…

C语言面试之旅:掌握基础,探索深度(面试实战之单片机80C51单片机中断)

一、中断概念 中断是计算机科学中的一个重要概念&#xff0c;指当出现某些特殊情况时&#xff0c;处理器会暂停正在执行的程序&#xff0c;转而执行另一段特定的程序&#xff0c;处理完之后再返回到原程序继续执行。这个特殊的情况就叫做中断。 在80C51单片机中&#xff0c;当某…

uniapp实战 —— 自定义顶部导航栏

效果预览 下图中的红框区域 范例代码 src\pages.json 配置隐藏默认顶部导航栏 "navigationStyle": "custom", // 隐藏默认顶部导航src\pages\index\components\CustomNavbar.vue 封装自定义顶部导航栏的组件&#xff08;要点在于&#xff1a;获取屏幕边界…

从零开始的C++(二十一)

C11 1.列表初始化&#xff1a; //允许以下代码正确运行int a[]{1,2,3};//效果与int a[]{1,2,3}一致 即允许省略等于号。同时&#xff0c;允许用花括号对所有自定义类型和内置类型进行初始化&#xff0c;而非以前花括号只能对数组进行初始化。利用花括号对自定义类型初始化时…

基于opencv和tensorflow实现人脸识别项目源码+可执行文件,采用python中的tkinter库做可视化

项目名称: 基于OpenCv和tensorflow的人脸识别 完整代码下载地址&#xff1a;基于OpenCv和tensorflow的人脸识别 环境配置: Pythontensorflow2OpenCv categories: 人工智能 description: Opencv是一个开源的的跨平台计算机视觉库&#xff0c;内部实现了图像处理和计算机视觉方…