JDBC——Java数据库连接

在这里插入图片描述

文章目录

  • 一、数据库工具类
  • 二、JDBC—— Java数据库连接
  • 三、执行DML语句
  • 四、执行DQL语句
  • 五、关联查询
  • 六、执行预编译SQL语句
  • 七、SELECT语句
  • 八、练习创建表:student1
  • 九、向student1表中插入100条数据
  • 十、删除名字为Test20---Test100的学生
  • 十一、将student1表中所有test学生的年龄涨1岁
  • 十二、修改某个用户的密码

一、数据库工具类

package jdbc;

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

/**
 * 数据库工具类,维护数据库驱动加载,连接的创建
 */
public class DBUtil {
    static {
        try {
            //DBUtil第一次被加载时,加载数据库驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
      return DriverManager.getConnection(
             "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
             "root",
             "root");
    }
}

二、JDBC—— Java数据库连接

package jdbc;

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

/**
 * JDBC [Java DataBase Connectivity]  JAVA数据库连接
 * JDBC是SUN提供的一套API接口,使用JAVA连接数据库的一套标准接口。
 * 各个数据库提供上都提供了一套JDBC的实现类用于连接自家的DBMS。而提供的这一套
 * 实现类也称为连接该DBMS的驱动(Driver)
 *
 * 1:要加载需要操作的DBMS厂商提供的驱动(MAVEN直接加载依赖)
 * 2:基于标准的JDBC操作流程操作该数据库
 */
public class JDBCDemo1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        /*
            JDBC连接DBMS的标准流程
            1:加载驱动:Class.forName("不同数据库厂商提供的Driver类")
            2:与数据库建立连接:DriverManager.getConnection()
            3:通过Connection对象创建用于执行SQL语句的Statement对象
            4:通过Statement执行SQ语句
            5:如果执行的是DQL,则可以遍历查询结果集
         */
        //1 JDBC中Driver接口的实现类不同数据库厂商提供的的包名与类名不相同
        Class.forName("com.mysql.cj.jdbc.Driver");//mysql固定就是这个

        //2
        /*
            DriverManager.getConnection()方法需要传入三个参数
            1:连接数据库的路径(不同的数据库路径格式不完全相同)
            2:连接数据库的用户名
            3:连接数据库的密码
            该方法返回值为一个Connection的实例(Connection是一个接口,是
            JDBC中的一个核心接口,用于表示一个与数据库的连接。不同的数据库
            厂商在驱动包里提供了对应的实现类)
         */
        //URL格式-> jdbc:不同数据库有自己格式的部分/数据库名?参数
        Connection connection = DriverManager.getConnection(
//                                      数据库名,相当于USE tedu
//                                              ||||
//                                              VVVV
                "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                "root",
                "root");
        System.out.println("数据库连接成功!");
        /*
            通过Connection获取用于执行SQL语句的执行对象Statement
            Statement对象的作用就是向数据库执行指定的SQL语句。
         */
        Statement state = connection.createStatement();
        /*
            创建一张表userinfo
            字段:id,username,password,nickname,age
         */
        String sql = "CREATE TABLE userinfo(" +
                "       id INT AUTO_INCREMENT PRIMARY KEY," +
                "       username VARCHAR(30)," +
                "       password VARCHAR(30)," +
                "       nickname VARCHAR(30)," +
                "       age INT(3)" +
                ")";
        /*
            boolean execute(String sql)
            该方法可以执行任意分类的SQL语句。但是DML和DQL都有专门的方法
            用于执行,因此该方法一般用于指定DDL语句(CREATE,ALTER,DROP)

            该方法返回值为true表达该SQL执行后有查询结果集。
         */
        state.execute(sql);
        System.out.println("SQL执行完毕");
    }
}

三、执行DML语句

package jdbc;

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

/**
 * 执行DML语句(INSERT,UPDATE,DELETE)
 */
public class JDBCDemo2 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        try(
                Connection connection = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                        "root",
                        "root");
        ) {
            Statement state = connection.createStatement();
            String sql = "INSERT INTO student1(name,age,class_id) " +
                    "     VALUES('张三',12,1)";
            /*
                int executeUpdate(String sql)
                专门用来执行DML语句的方法,返回值为执行该SQL后影响了表中多少条记录
             */
            int count = state.executeUpdate(sql);//INSERT插入1条数据
            if(count>0){//执行后至少影响了表中1条数据
                System.out.println("影响了表中"+count+"条数据");
            }


            System.out.println("执行完毕");
        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}

四、执行DQL语句

package jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 执行DQL语句(SELECT)
 */
public class JDBCDemo3 {
    public static void main(String[] args) {
        /*
            查看所有老师的id,名字,年龄,工资,奖金,性别
            SELECT id,name,age,salary,comm,gender
            FROM teacher
         */
        try(
            Connection connection = DBUtil.getConnection();
        ){
            Statement state = connection.createStatement();
            /*
                SELECT子句某个字段如果是一个计算表达式,或者函数.那么应当为该字段
                指定别名.
             */
            String sql = "SELECT id,name,age,salary*12 sal,comm,gender " +
                         "FROM teacher ";
            System.out.println(sql);
            /*
                Statement中
                ResultSet executeQuery(String sql)
                专门用户来执行DQL语句的方法。返回的ResultSet表示执行该DQL后
                产生的查询结果集。通过遍历该结果集得到查询内容
             */
            ResultSet rs = state.executeQuery(sql);
            /*
                ResultSet遍历结果集中重要的方法:

                boolean next()
                让结果集指针向下移动一条数据,如果结果集存在下一条数据则返回
                true否则返回false。
                注:指针默认在结果集第一条记录之前。

                获取指针当前指向的结果集中该条记录的字段值对应的方法:
                String getString(int c)
                获取字符串类型字段的值,c表示结果集中该条记录的第几个字段
                1表示第一个字段,2表示第二个字段以此类推

                String getString(String cname)
                获取字符串类型字段的值,cname表示结果集中该条记录指定名字的字段值

                int getInt(int c)
                int getInt(String cname)
                获取int型字段值

                同样还有获取浮点型,日期型等方法...
             */
            while(rs.next()){
                //获取id
//                int id = rs.getInt(1);
//                String name = rs.getString(2);
//                int age = rs.getInt(3);
//                int salary = rs.getInt(4);
//                int comm = rs.getInt(5);
//                String gender = rs.getString(6);
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                //如果DQL中SELECT的字段有别名,这里获取结果集对应字段要用别名
                int salary = rs.getInt("sal");
                int comm = rs.getInt("comm");
                String gender = rs.getString("gender");
                System.out.println(id+","+name+","+age+","+salary+","+comm+","+gender);
            }

        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}

五、关联查询

package jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 关联查询
 */
public class JDBCDemo4 {
    public static void main(String[] args) {
        try (
            Connection connection = DBUtil.getConnection();
        ){
            Statement statement = connection.createStatement();
            //查看1年级1班的学生名字,年龄,性别,班级名称,班主任名字
            String sql = "SELECT s.name sname,s.age sage,s.gender sgender,c.name cname,t.name tname " +
                         "FROM student s " +
                         "JOIN class c ON s.class_id=c.id " +
                         "JOIN teacher t ON c.teacher_id=t.id " +
                         "WHERE c.name='1年级1班'";
            ResultSet rs = statement.executeQuery(sql);
            while(rs.next()){
                String sname = rs.getString("sname");
                int sage = rs.getInt("sage");
                String sgender = rs.getString("sgender");
                String cname = rs.getString("cname");
                String tname = rs.getString("tname");
                System.out.println(sname+","+sage+","+sgender+","+cname+","+tname);

            }


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

六、执行预编译SQL语句

package jdbc;

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

/**
 * 执行预编译SQL语句
 * 优点:
 * 1:避免了繁琐的拼接SQL语文
 * 2:避免了被SQL注入的问题
 * 3:大批量执行相同语义的SQL(语义相同,值不同)时性能好
 *
 * 实际开发中我们的CRUD都建议使用预编译SQL来执行
 */
public class JDBCDemo5 {
    public static void main(String[] args) {
        try (
                Connection conn = DBUtil.getConnection();
        ){
            //向userinfo表中插入数据
            String sql = "INSERT INTO userinfo " +
                         "(username,password,nickname,age) " +
                         "VALUES " +
                         "(?,?,?,?)";//预编译SQL中可以先用"?"代替值
            /*
                此时Connection会现将该SQL发送给数据库,使其生成该SQL的
                执行计划,表明该SQL的语义.
                数据库理解了,要向userinfo表插入数据,并且对4个字段插入内容
                只不过该SQL不能真正执行,因为还没有数据.
             */
            PreparedStatement ps = conn.prepareStatement(sql);
            //使用PreparedStatement为四个预留的"?"设置应有的值
            ps.setString(1,"王克晶");//第1个?的值为字符串类型的"王克晶"
            ps.setString(2,"123456");
            ps.setString(3,"克晶");
            ps.setInt(4,18);//第4个?的值为int类型的数字18
            //此时执行时仅将4个?对应的值传递给数据库
            int count = ps.executeUpdate();
            if(count>0){
                System.out.println("插入成功");
            }




        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

七、SELECT语句

package jdbc;

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

/**
 * SELECT语句
 */
public class JDBCDemo6 {
    public static void main(String[] args) {
        try (
           Connection conn = DBUtil.getConnection();
        ){
           String sql = "SELECT id,username,password,nickname,age " +
                        "FROM userinfo " +
                        "WHERE username=? AND password=?";
           PreparedStatement ps = conn.prepareStatement(sql);
           ps.setString(1,"王克晶");
//           ps.setString(2,"666666");
            ps.setString(2,"' OR '1'='1");
           ResultSet rs = ps.executeQuery();
           if(rs.next()){
               System.out.println("登录成功");
           }else{
               System.out.println("登录失败");
           }


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

八、练习创建表:student1

package jdbc;

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

/**
 * 练习创建表:student1
 * 字段:
 * id int
 * name varchar
 * age int
 * class_id int
 *
 */
public class Test {
    public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");//mysql固定就是这个
        //URL格式-> jdbc:不同数据库有自己格式的部分/数据库名?参数
        try(
                Connection connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                "root",
                "root");
        ) {
            Statement state = connection.createStatement();
            String sql = "CREATE TABLE student1(" +
                    "       id INT AUTO_INCREMENT PRIMARY KEY," +
                    "       name VARCHAR(30)," +
                    "       age INT(3)," +
                    "       class_id INT" +
                    ")";
            state.execute(sql);
            System.out.println("执行完毕");
        }catch(SQLException e){
            e.printStackTrace();
        }

    }
}

九、向student1表中插入100条数据

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;

/**
 * 向student1表中插入100条数据。人名格式:test1---test100
 * 年龄10-15岁之间。班级号1-10之间
 *
 * 随机一个区间n,m   n:下线  m是上线
 * random.nextInt(m-n)+n   不包含上线值m
 * random.nextInt(m+1-n)+n 包含上限值m
 */
public class Test1 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        try(
                Connection connection = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                        "root",
                        "root");
        ) {
            Statement state = connection.createStatement();
            Random r = new Random();
            for(int i=1;i<=100;i++) {
                String name = "test"+i;
                int age = r.nextInt(6)+10;
                int classId = r.nextInt(10)+1;
                String sql = "INSERT INTO student1(name,age,class_id) " +
                        "VALUES('" + name + "',"+ age +"," + classId + ")";
                System.out.println(sql);
            /*
                int executeUpdate(String sql)
                专门用来执行DML语句的方法,返回值为执行该SQL后影响了表中多少条记录
             */
                int count = state.executeUpdate(sql);//INSERT插入1条数据
                if (count > 0) {//执行后至少影响了表中1条数据
                    System.out.println("影响了表中" + count + "条数据");
                }
            }
            System.out.println("执行完毕");
        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}

十、删除名字为Test20—Test100的学生

package jdbc;

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

/**
 * 删除名字为Test20---Test100的学生
 */
public class Test2 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        try(
                Connection connection = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                        "root",
                        "root");
        ) {
            Statement state = connection.createStatement();
            String sql = "DELETE FROM student1" +
                    "     WHERE name NOT LIKE 'test_' " +
                    "     AND name NOT LIKE 'test1_'";
            /*
                int executeUpdate(String sql)
                专门用来执行DML语句的方法,返回值为执行该SQL后影响了表中多少条记录
             */
            int count = state.executeUpdate(sql);//INSERT插入1条数据
            if(count>0){//执行后至少影响了表中1条数据
                System.out.println("影响了表中"+count+"条数据");
            }


            System.out.println("执行完毕");
        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}

十一、将student1表中所有test学生的年龄涨1岁

package jdbc;

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

/**
 * 将student1表中所有test学生的年龄涨1岁
 * UPDATE student1
 * SET age=age+1
 * WHERE name LIKE 'test%'
 */
public class Test3 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        try(
                Connection connection = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                        "root",
                        "root");
        ) {
            Statement state = connection.createStatement();
            String sql = "UPDATE student1 " +
                         "SET age=age+1 " +
                         "WHERE name LIKE 'test%'";
            /*
                int executeUpdate(String sql)
                专门用来执行DML语句的方法,返回值为执行该SQL后影响了表中多少条记录
             */
            int count = state.executeUpdate(sql);//INSERT插入1条数据
            if(count>0){//执行后至少影响了表中1条数据
                System.out.println("影响了表中"+count+"条数据");
            }


            System.out.println("执行完毕");
        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}

十二、修改某个用户的密码

package jdbc;

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

/**
 * 修改某个用户的密码
 * 例如:
 * 将"王克晶"的密码改成"666666"
 *
 * 对应的预编译SQL为:
 * UPDATE userinfo
 * SET password=?
 * WHERE username=?
 */
public class Test4 {
    public static void main(String[] args) {
        try (
             Connection conn = DBUtil.getConnection();
        ){
            String sql = "UPDATE userinfo " +
                         "SET password=? " +
                         "WHERE username=? ";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1,"666666");
            ps.setString(2,"王克晶");
            int count = ps.executeUpdate();
            if(count>0){
                System.out.println("修改成功");
            }else{
                System.out.println("修改失败");
            }


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

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

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

相关文章

基于深度学习的花卉检测与识别系统(YOLOv5清新界面版,Python代码)

摘要&#xff1a;基于深度学习的花卉检测与识别系统用于常见花卉识别计数&#xff0c;智能检测花卉种类并记录和保存结果&#xff0c;对各种花卉检测结果可视化&#xff0c;更加方便准确辨认花卉。本文详细介绍花卉检测与识别系统&#xff0c;在介绍算法原理的同时&#xff0c;…

在不丢失数据的情况下解锁锁定的 Android 手机的 4 种方法

尽管您可以使用指纹解锁手机&#xff0c;但大多数智能手机都需要 PIN 码、图案或字母数字代码作为主密码。如果您有一段时间没有输入手机密码&#xff0c;很容易忘记。正是由于这个原因&#xff0c;即使您打开了指纹解锁&#xff0c;大多数智能手机也会让您每天至少输入一次 PI…

Pandas的DataFrame的生产,DF数据查看

这篇文档介绍了 Pandas 的入门使用方法。Pandas 是 Python 的一个数据分析库&#xff0c;可以方便地操作数据和进行数据分析。 本节以下列方式导入 Pandas 与 NumPy&#xff1a; In [1]: import numpy as npIn [2]: import pandas as pd#生成对象 用值列表生成 Seriesopen in…

并发编程(五)-ExecutorService源码分析

一、ExecutorService是什么?ExecutorService 是 Java 中的一个接口&#xff0c;它扩展了 Executor 接口&#xff0c;并提供了更多的方法来处理多线程任务。它是 Java 中用于执行多线程任务的框架之一&#xff0c;可以创建一个线程池&#xff0c;将多个任务提交到线程池中执行。…

【C++进阶】十一、哈希的应用---布隆过滤器(二)

目录 一、布隆过滤器提出 二、布隆过滤器概念 三、布隆过滤器实现 3.1 布隆过滤器的插入 3.2 布隆过滤器的查找 3.3 布隆过滤器的删除 3.4 完整代码 四、布隆过滤器优点 五、布隆过滤器缺陷 一、布隆过滤器提出 在注册账号设置昵称的时候&#xff0c;有些软件要求每个…

元宇宙、区块链 通俗易懂

什么是区块链&#xff1f;比特币挖矿是什么&#xff1f;元宇宙是什么&#xff1f;Web(万维网)的三权化进化&#xff1a;基于此&#xff0c;介绍下“元宇宙”。1992年&#xff0c;美国作家史蒂芬森在《雪崩》一书中首次提出了“元宇宙(Metaverse)”的概念。元宇宙实际上就是一种…

【MIT 6.S081】Lab3: page tables

PgtblPrint a page tableA kernel page table per processSimplify copyin/copyinstr本Lab简单优化了系统的页表功能&#xff0c;使得程序在内核态时可以直接解析用户态的指针。笔者用时约8hPrint a page table 第一部分是为系统添加一个打印给定页表的函数vmprint&#xff0c…

C语言-程序环境和预处理(2)

文章目录预处理详解1.预定义符号2.#define2.1#define定义的标识符2.2#define定义宏2.3#define替换规则注意事项&#xff1a;2.4#和###的作用##的作用2.5带副作用的宏参数2.6宏和函数的对比宏的优势&#xff1a;宏的劣势&#xff1a;宏和函数的一个对比命名约定3.undef4.条件编译…

centos系统/dev/mapper/centos-root目录被占满的解决方式

最近在做虚拟机部署docker微服务时&#xff0c;发现磁盘内存占满&#xff0c;无法进行操作。open /var/lib/dpkg/info/libc6:amd64.templates: no space left on device接下来就写下我在备份虚拟机上如何解决根目录被占满的问题&#xff1a;1、查看虚拟机磁盘使用情况df -h可以…

D - 统计子矩阵 (双指针+前缀和+降维处理)

D - 统计子矩阵 &#xff08;双指针前缀和降维处理&#xff09; 1、问题 D - 统计子矩阵 2、分析 代码 &#xff08;1&#xff09;纯暴力做法&#xff1a; 这个做法就很简单了&#xff0c;我们直接枚举所有的子矩阵&#xff0c;然后在对每一个子矩阵内部的元素逐一累加起…

【计算机二级】综合题目

计算机二级python真题 文章目录计算机二级python真题一、《大学慕课 两问 》二、综合应用题——价值链三、基本操作题 ——信息输出一、《大学慕课 两问 》 附件中的文件data.txt 是教育部爱课程网中国大学MOOC平台的某个 HTML页面源文件,里面包含了我国参与MOOC建设的一批大学…

STM32之点亮一个LED小灯(轮询法)

目录 一、初始化GPIO口 二、按键点亮LED灯&#xff08;轮询法&#xff09; 一、初始化GPIO口 1、点亮LED小灯前&#xff0c;需要先初始化GPIO口 HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) GPIO_TypeDef *GPIOx&#xff1a; //指初始化GPIO…

libvirt零知识学习5 —— libvirt源码编译安装(3)

接前一篇文章libvirt零知识学习4 —— libvirt源码编译安装&#xff08;2&#xff09; 在上篇文章及上上篇文章中构建libvirt的时候遇到了一个问题“ERROR: Problem encountered: YAJL 2 is required to build QEMU driver”。上篇文章讲到即使安装了相应的YAJL库仍然不能解决问…

HC小区管理系统window系统安装教程

实操视频 HC小区管理系统局域网window物理机部署教程_哔哩哔哩_bilibili 一、下载安装包 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1XAjxtpeBjHIQUZs4M7TsRg 提取码&#xff1a;hchc 或者 123盘 hc-window.zip官方版下载丨最新版下载丨绿色版下…

12个 Python 装饰器让代码cleaner

0 — 引言装饰器能在在不影响质量的情况下用更少的代码做更多的事情。Python 装饰器是强大的工具&#xff0c;可帮助你生成干净、可重用和可维护的代码。我等了很久才想了解这些抽象&#xff0c;现在我已经有了扎实的理解&#xff0c;本篇是为了帮助你也掌握这些对象背后的概念…

uni-app+uView如何轮播图滑动时改变背景颜色和导航栏颜色

今儿的创作欲很高涨哈 &#x1f604; 这也是在群里看到的&#xff0c;群友问如何在滑动&#xff08;或者自动滑动&#xff09;的时候背景颜色能跟着变 正好之前做过这个需求&#xff0c;也分享一下 首先&#xff0c;页面的组成分为三部分&#xff1a; 自定义navbar 页面背景轮…

JavaSE进阶之(十六)枚举

十六、枚举16.1 背景16.2 枚举类型16.3 EnumSet 和 EnumMap01、EnumSet02、EnumMap16.1 背景 在 Java 语言中还没有引入枚举类型之前&#xff0c;表示枚举类型的常用模式是声明一组 int 类型的常量&#xff0c;常常用的就是&#xff1a; public static final int SPRING 1; …

ElementUI学习笔记

目录 一、简单介绍 二、安装 1、下载 2、引入 三、布局 1、简介 2、使用 3、好处 四、布局容器 1、常见排布 2、调整样式 五、按钮 1、简单引用 2、改变样式 3、加载中效果 六、表格 1、简单使用 2、样式修改 七、对话框 1、简单使用 2、添加自定义内容 3、…

7个最受瞩目的 Python 库,提升你的开发效率

当今时代&#xff0c;数据分析和处理已经成为了各行各业中不可或缺的一环。Python作为一种非常流行的编程语言&#xff0c;为我们提供了许多强大的工具和库来处理不同类型的数据。 在这篇文章中&#xff0c;我将向您介绍七个非常有用的Python库&#xff0c;这些库各自有着独特…

js调用gpt3.5

参考链接&#xff1a;直接在前端调用 GPT-3 API 效果图&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>ChatGPT Web Example</title><style>body {font-family: "Helvetica Neue"…