Java-JDBC操作MySQL

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;
            }
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue 3 + Tailwind CSS:打造现代化项目的完美组合

Vue 3 Tailwind CSS&#xff1a;打造现代化项目的完美组合 本篇教程将向你介绍如何将 Tailwind CSS 与 Vue 3 项目搭配使用&#xff0c;为你的项目提供现代化的 UI 呈现和开发体验。通过本文的逐步演示和示例代码&#xff0c;你将很快掌握在 Vue 3 中集成和使用 Tailwind CSS…

29、卷积 - 参数 padding 的作用

在卷积过程中,Padding(填充)是一个关键的概念,它对于保留输入信息和有效地处理边缘信息至关重要。 1、Padding是什么? Padding 指的是在输入图像的周围添加额外的像素值,用来以扩大输入图像的尺寸,这些额外填充的像素值通常设置为零,卷积操作在这个填充后的输入图像上…

解决Unity打包Apk卡在calling IPostGenerateGradleAndroidProject callbacks

防盗镇楼 本文地址:https://superliii.blog.csdn.net/article/details/134820215 问题 好烦,又双叒卡BUG,在解决此问题的10多个小时里面鬼知道我经历了什么… 构建APK卡在calling IPostGenerateGradleAndroidProject callbacks 好不容易搜到个极其隐蔽的帖子,说删C:\Users\…

Windows下使用CMD修改本地IP

在网络适配器界面查看当前网线连接的哪个网口&#xff0c;我当前连的是 以太网 这个名字的&#xff1a; 在windows下使用管理员权限打开CMD命令工具&#xff0c;输入如下命令(如我想本地ip改成192.168.2.4)&#xff1a; netsh interface ip set address "以太网" st…

HTML5+CSS3+JS小实例:文字依次点击验证

实例:文字依次点击验证 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=&quo…

人工智能原理复习--搜索策略(一)

文章目录 上一篇搜索概述一般图搜索盲目搜索下一篇 上一篇 人工智能原理复习–确定性推理 搜索概述 问题求解分为两大类&#xff1a;知识贫乏系统&#xff08;依靠搜索技术解决&#xff09;、知识丰富系统&#xff08;依靠推理技术&#xff09; 两大类搜索技术&#xff1a; …

ChatGPT有什么新奇的使用方式?

2023&#xff0c;ChatGPT几乎席卷了所有行业&#xff0c;并且具有不可测量的巨大潜力等着我们去挖掘。 越来越多人对ChatGPT的应用产生兴趣&#xff0c;知乎上“ChatGPT有什么新奇的使用方式&#xff1f;”这一个热门话题的兴起就是最好的证明。 写作&#xff0c;毫无疑问&…

Numpy数组的去重 np.unique()(第15讲)

Numpy数组的去重 np.unique()(第15讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

13 RT1052的中断应用概览

文章目录 13.1 异常类型13.2 NVIC13.2.1 NVIC一些概念13.2.2 NVIC的SDK支持13.3 优先级的定义13.3.1 AIRCR13.3.2 优先级分组 13.4 中断编程13.4.1 中断服务函数 RT1052 中断非常强大&#xff0c;每个外设都可以产生中断 13.1 异常类型 异常响应系统&#xff0c;分为系统异常和…

【c语言指针详解】复杂数据结构的指针用法

目录 一、动态内存分配 1.1 使用malloc和free函数进行内存的动态分配和释放 1.2 内存泄漏和野指针的概念和解决方法 二、复杂数据结构的指针用法 2.1 结构体指针和成员访问操作符 2.2 指针数组和指向指针的指针 2.2.1 指针数组 2.2.2 指向指针的指针 2.3 动态内存分配与结构体指…

React面试题(1)

1、什么是React&#xff1f; React是一个用于构建用户界面的JavaScript库。 2、React的特点是什么&#xff1f; React的主要特点包括&#xff1a; 组件化虚拟DOM单向数据流JSX语法高效的性能生态系统丰富 3、什么是JSX&#xff1f; JSX是一种JavaScript的语法扩展&#x…

C语言数据结构-----二叉树(1)认识数、二叉树、堆及堆的代码实现

前言 本篇文章讲述数、、二叉树、堆的基本概念和知识&#xff0c;以及堆的代码实现。 文章目录 前言1.树概念及结构1.1 树的定义1.2 树的基本概念1.3 如何区分树&#xff1f;1.4 二叉树1.5 二叉树的分类1.6 二叉树的存储结构 2.堆2.1 堆的基本概念2.2 堆的代码实现2.2.1 堆的…

【计算机网络】URL概念及组成

目录 前言 一. URL是什么 二. URL的组成 三. encode和decode 结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇讲解使用浏览器不可或缺的部分——URL 一. URL是什么 域…

前端使用视频作为背景图的方法

实现思路 通过 video source 引入视频&#xff0c;并对视频播放属性进行设置&#xff0c;再通过 css 使视频覆盖背景即可。 代码 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>有开发问题可联系作者</title>…

小白学java栈的经典算法问题——第四关白银挑战

内容1.括号匹配问题2.最小栈3.最大栈 1.括号匹配问题 栈的典型题目还是非常明显的&#xff0c;括号匹配、表达式计算等等几乎都少不了栈&#xff0c;本小节我们就看两个最经典的问题 首先是LeetCode20,链接 本道题还是比较简单的&#xff0c;其中比较麻烦的是如何判断两个符…

LeetCode刷题--- 求根节点到叶节点数字之和

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏&#xff1a;http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言&#xff1a;这个专栏主要讲述递归递归、搜索与回溯算法&#xff0c;所以下面题目主要也是这些算法做的 我讲述…

正则表达式:字符串处理的瑞士军刀

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

C++ Qt开发:字符串QString容器

在Qt框架中&#xff0c;QString 是一个强大而灵活的字符串容器&#xff0c;专为处理 Unicode 字符而设计。它提供了许多方便的方法来操作和处理字符串&#xff0c;使得在跨平台开发中能够轻松地进行文本操作。QString 是 Qt 开发中不可或缺的一部分&#xff0c;它的灵活性和强大…

Java9及之后关于类加载器的新特性

为了保证兼容性&#xff0c;JDK9没有从根本上改变三层类加载器的架构和双亲委派模型&#xff0c;但为了模块化系统的顺利运行&#xff0c;仍然发生了一些值得被注意的变动。 一、变动1 由于引入了模块化概念&#xff0c;所以不同的类加载器回去加载属于不同模块的类 启动类加…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion简介

Stable Diffusion是2022年发布的深度学习文本到图像生成模型,它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如