DCL JDBC基础创建

Win11下高效管理JDK1.8与JDK17双环境的实战指南 本文提供了一份在Windows 11系统上高效管理JDK 1.8与JDK 17双环境的实战指南。文章详细讲解了如何实现双版本切换,包括如何干净安装两个JDK、通过巧妙配置环境变量实现命令行一键切换,以及在不同IDE和构建工具中为项目独立配置JDK版本,旨在帮助Java开发者彻底解决版本冲突问题,提升开发效率。 阅读详情
DCL管理用户增删查
  1. 添加用户:
    * 语法:CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
  2. 删除用户:
    * 语法:DROP USER ‘用户名’@‘主机名’;
  3. 修改用户密码:
    UPDATE USER SET PASSWORD = PASSWORD(‘新密码’) WHERE USER = ‘用户名’;
    UPDATE USER SET PASSWORD = PASSWORD(‘abc’) WHERE USER = ‘lisi’;
    SET PASSWORD FOR ‘用户名’@‘主机名’ = PASSWORD(‘新密码’);
    SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘123’);
  4. 查询用户:
    – 1. 切换到mysql数据库
    USE myql;
    – 2. 查询user表
    SELECT * FROM USER;
    * 通配符: % 表示可以在任意主机使用用户登录数据库
    • mysql中忘记了root用户的密码?
  5. cmd – > net stop mysql 停止mysql服务
    • 需要管理员运行该cmd
  6. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables
  7. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
  8. use mysql;
  9. update user set password = password(‘你的新密码’) where user = ‘root’;
  10. 关闭两个窗口
  11. 打开任务管理器,手动结束mysqld.exe 的进程
  12. 启动mysql服务
  13. 使用新密码登录
DCL管理权限
  1. 查询权限:
    – 查询权限
    SHOW GRANTS FOR ‘用户名’@‘主机名’;
    SHOW GRANTS FOR ‘lisi’@’%’;
  2. 授予权限:
    – 授予权限
    grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
    – 给张三用户授予所有权限,在任意数据库任意表上
    GRANT ALL ON . TO ‘zhangsan’@‘localhost’;
  3. 撤销权限:
    – 撤销权限:
    revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;
    REVOKE UPDATE ON db3.account FROM ‘lisi’@’%’;
JDBC概念

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

JDBC_快速入门

步骤:
1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
2.右键–>Add As Library
2. 注册驱动
3. 获取数据库连接对象 Connection
4. 定义sql
5. 获取执行sql语句的对象 Statement
6. 执行sql,接受返回结果
7. 处理结果
8. 释放资源

JDBC各个类详解_DriverManager_注册驱动

//2.注册驱动
Class.forName(“com.mysql.jdbc.Driver”);

  1. 注册驱动:告诉程序该使用哪一个数据库驱动jar
    static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。
    写代码使用: Class.forName(“com.mysql.jdbc.Driver”);
    通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块
    static {
    try {
    java.sql.DriverManager.registerDriver(new Driver());
    } catch (SQLException E) {
    throw new RuntimeException(“Can’t register driver!”);
    }
    }

注意:mysql5之后的驱动jar包可以省略注册驱动的步骤。

JDBC_DriverManager_获取数据库连接

获取数据库连接:

  • 方法:static Connection getConnection(String url, String user, String password)
    • 参数:
    • url:指定连接的路径
    • 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
    • 例子:jdbc:mysql://localhost:3306/db3
    • 细节:如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为: jdbc:mysql:///数据库名称
    • user:用户名
    • password:密码
JDBC各个类详解_Connection
  1. 获取执行sql 的对象
    • Statement createStatement()
    • PreparedStatement prepareStatement(String sql)
  2. 管理事务:
    • 开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务
    • 提交事务:commit()
    • 回滚事务:rollback()
JDBC各个类详解_Statement
  1. 执行sql
    1. boolean execute(String sql) :可以执行任意的sql 了解
    2. int executeUpdate(String sql) :执行DML(insert、update、delete)语句、DDL(create,alter、drop)语句
    • 返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功,反之,则失败。
  2. ResultSet executeQuery(String sql) :执行DQL(select)语句
JDBC练习_insert语句
Statement stmt = null;
		        Connection conn = null;
		        try {
		            //1. 注册驱动
		            Class.forName("com.mysql.jdbc.Driver");
		            //2. 定义sql
		            String sql = "insert into account values(null,'王五',3000)";
		            //3.获取Connection对象
		            conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
		            //4.获取执行sql的对象 Statement
		            stmt = conn.createStatement();
		            //5.执行sql
		            int count = stmt.executeUpdate(sql);//影响的行数
		            //6.处理结果
		            System.out.println(count);
		            if(count > 0){
		                System.out.println("添加成功!");
		            }else{
		                System.out.println("添加失败!");
		            }
		
		        } catch (ClassNotFoundException e) {
		            e.printStackTrace();
		        } catch (SQLException e) {
		            e.printStackTrace();
		        }finally {
		            //stmt.close();
		            //7. 释放资源
		            //避免空指针异常
		            if(stmt != null){
		                try {
		                    stmt.close();
		                } catch (SQLException e) {
		                    e.printStackTrace();
		                }
		            }
		
		            if(conn != null){
		                try {
		                    conn.close();
		                } catch (SQLException e) {
		                    e.printStackTrace();
		                }
		            }
		        }
JDBC各个类详解_ResultSet_基本使用

ResultSet:结果集对象,封装查询结果
* boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
* getXxx(参数):获取数据
* Xxx:代表数据类型 如: int getInt() , String getString()
* 参数:
1. int:代表列的编号,从1开始 如: getString(1)
2. String:代表列名称。 如: getDouble(“balance”)

	* 注意:
		* 使用步骤:
			1. 游标向下移动一行
			2. 判断是否有数据
			3. 获取数据
JDBC各个类详解_ResultSet_遍历结果集

//循环判断游标是否是最后一行末尾。
while(rs.next()){
//获取数据
//6.2 获取数据
int id = rs.getInt(1);
String name = rs.getString(“name”);
double balance = rs.getDouble(3);
System.out.println(id + “—” + name + “—” + balance);
}

JDBC练习_select语句

练习:

  • 定义一个方法,查询emp表的数据将其封装为对象,然后装载集合,返回。
    1. 定义Emp类
    2. 定义方法 public List findAll(){}
    3. 实现方法 select * from emp;
public class emp {
    private int id;
    private String ename;
    private int job_id;
    private int mgr;
    private Date joindate;
    private double salary;
    private double bonus;
    private int dept_id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public int getJob_id() {
        return job_id;
    }

    public void setJob_id(int job_id) {
        this.job_id = job_id;
    }

    public int getMgr() {
        return mgr;
    }

    public void setMgr(int mgr) {
        this.mgr = mgr;
    }

    public Date getJoindate() {
        return joindate;
    }

    public void setJoindate(Date joindate) {
        this.joindate = joindate;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }

    public int getDept_id() {
        return dept_id;
    }

    public void setDept_id(int dept_id) {
        this.dept_id = dept_id;
    }

    @Override
    public String toString() {
        return "emp{" +
                "id=" + id +
                ", ename='" + ename + '\'' +
                ", job_id=" + job_id +
                ", mgr=" + mgr +
                ", joindate=" + joindate +
                ", salary=" + salary +
                ", bonus=" + bonus +
                ", dept_id=" + dept_id +
                '}';
    }
}
 // 导入包 (导过了)
        // 将三个对象 提出 作用域太小 finally中接收不到 (扩大对象 集合的作用域)
        ResultSet rs = null;
        Connection conn  = null;
        Statement stmt = null;
        List<emp> list = null;
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获得数据库连接对象
            conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
            //执行sql的语句
            String sql = "select * from emp";
            //获得数据库操作对象
            stmt = conn.createStatement();
            //操作数据库
            rs = stmt.executeQuery(sql);
            //创建List集合 遍历rs对象 将数据存入List集合中
            list = new ArrayList<emp>();
            // 遍历rs对象
            while(rs.next()){
                //提取数据
                int id = rs.getInt("id");
                String ename = rs.getString("ename");
                int job_id = rs.getInt("job_id");
                int mgr = rs.getInt("mgr");
                Date joindate = rs.getDate("joindate");
                int salary = rs.getInt("salary");
                int bonus = rs.getInt("bonus");
                int dept_id = rs.getInt("dept_id");

                //向list集合添加数据
                //新建emp对象
                emp Emp = new emp();
                Emp.setId(id);
                Emp.setEname(ename);
                Emp.setJob_id(job_id);
                Emp.setMgr(mgr);
                Emp.setJoindate(joindate);
                Emp.setSalary(salary);
                Emp.setBonus(bonus);
                Emp.setDept_id(dept_id);
                //向集合中添加数据
                list.add(Emp);
            }

            //遍历集合输出(忘了....)
            System.out.println(list);
            System.out.println(list.size());

            //关闭流 (必须要关  所以在finally中)
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally{
            //关闭流
            //判断是否为空 为空 则不用关流 否则报空指针
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                if(stmt!= null){
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(rs!=null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
深度学习(五)迁移学习(实战:新数据预测+vgg16和聚类预测) 6、成功引入PCA数据降维技术,剔除了数据中的噪音信息、降低了模型复杂度、减少了模型训练时间,并最终提高了模型表现;gen=datagen.flow_from_directory(path,target_size=(224,224),batch_size=2,save_to_dir=dst_path,save_prefix='gen',save_format='jpg') # 生成图片大小224*224,bs产生多少组图像,存储路径和前缀。1、通过使用新数据,实现了模型的2次训练,达到了较好的预测效果; 阅读详情

相关推荐

FANUC机器人PROFINET通讯方式组态

6 然后对模块进行命名及更改IP地址,点击“Network Detection”,进行扫描,会生成下图,双击商科模块会生成下边的对话框,对模块进行命名及更改IP地址,在“Permanent Name”处点对勾,完成后点击“Apply Name及Apply”进行命名。此处注意,上图左上在线在不了,网络扫描处上面也灰色的,扫描不了。5双击abcc-prt-2-port RT(FW1.13),生成下面图标,在右边点击1、2把原来内容删掉,从新在左侧加载 ,使1、2是输出,3、4为输入,完成后点击OK。

dxs93的博客 8434

MYSQL DCL与JDBC

学习目标 能够使用DCL处理MySQL中的用户 能够理解JDBC的概念 能够使用Connection接口 能够使用Statement接口 能够使用ResultSet接口 能够使用JDBC实现对单表数据增、删、改、查 能够使用JDBC操作事务 能够编写JDBC工具类 能够完成JDBC实现登录案例 第1章 DCL 我们现在默认使用的都是root用户,超级管理员,拥有全部的权限。但是,一个公司里面的...

ZHONGZEWEI的博客 564

使用 Unity Sentis 和 Compute Shader,det_10g.onnx 进行高效人脸五官定位

在计算机视觉领域,人脸五官定位是一个重要的任务。本文将介绍如何使用 Unity Sentis 和 Compute Shader,结合模型,实现高效的人脸五官定位。我们将详细讲解每一步骤,并提供完整的代码示例。

m0_55632444的博客 2394

17【JDBC基本操作】

Java Database Connectivity,简称JDBC;是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了操作数据库的所有方法;与我们之前的Navicate一样,JDBC也是一个MySQL的客户端,只不过Navicate提供了一系列图形化的控件让我们操作数据库,现在使用JDBC则需要编写Java代码才能操作数据库;Connection代表一个客户端与服务器端之间创建的一个网络连接对象,只有与数据库服务器连接之后才可以做后续的所有操作;.........

緑水長流*z 1795

便携式水下动态实时视频色彩还原设备,一键快速实现对水下偏色视频和图像的色彩还原处理

便携式水下动态实时视频色彩还原,一键快速对水下图像进行色彩校正,清晰度提升和亮度均衡处理,为水下资源勘探和科学考古,海洋生态环境监测,水下机器作业等应用提供有力的协助

weixin_43518680的博客 633

使用PaddleOCR识别查验平台验证码

PaddleOCR识别国税查验平台验证码

m0_63932300的博客 1269

four mySQL DCL JDBC

一 DCL 1.1创建用户 a) Create user ‘用户名’@’主机地址’ identified by ‘新密码’ b) 主机地址 localhost or 127.0.0.1 ‘%’代表任意主机地址[慎重] 密码可以为空 1.2 用户授权 Grant 权限1,权限2…on 数据库名.表名 to ‘用户名’@’主机地址’; Create 创建, alter 修改库,表 DDL dr...

weixin_42943720的博客 223

YOLOv8+ByteTrack实战:5分钟搞定多目标跟踪(附鱼群检测调参秘籍)

本文详细介绍了如何利用YOLOv8和ByteTrack快速实现多目标跟踪,特别针对鱼群检测等复杂场景提供参数调优秘籍。通过环境配置、核心机制解析和专项调优技巧,开发者可在5分钟内搭建高效跟踪系统,适用于水产养殖、交通监控等实际应用。文章还包含工程落地方案和性能优化建议,帮助实现精准的鱼群计数与行为分析。

e1f2g的博客 1019

数据库-DCL语句及JDBC

1. DCL语句 根据不同项目建立不同的用户,分配不同的权限来管理和维护数据库 1.1 创建用户 - CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 其中: 用户名:创建的用户名; 主机名:指定该用户在哪个主机上可以登录。若本地用户用localhost,若可从任意远程主机登录则可使用通配符%; 密码:该用户的登录密码,可以为空 ...

KeepStruggling的博客 1436

高通平台N4单路输入的720P相机预览

N4的一路720P Camera作为MIPI摄像头使用

llw21680的专栏 165

【VTKExamples::Meshes】第十二期 QuadricDecimation

本文分享VTK样例QuadricDecimation,并解析接口vtkQuadricDecimation,希望对各位小伙伴有所帮助!

qq_40041064的博客 344

数据库(三)——事物、视图、DCL(用户权限操作)、JDBC(操作数据库、API、方法介绍、ResultSet结果集、PreparedStatement以及相关案例)、工具类的封装(练习)

数据库(三) 一、事务 1、例子引入 例子: 现在有这么个情况: 有两个人需要转账,一方转给另一方,按照之前的操作是,甲的账户扣500,乙的账户再加500。问题是如果甲发起了转账操作,钱扣了,这个时候数据库宕机了,再启动数据库,就会发现甲的钱扣了,但是这钱并没有到乙这边来。 所以一个解决方案就是,这两个sql语句为一组,同时执行,要么大家都成功,要么大家都失败。这种执行方式j就是通过事务来管理。 2、事务的概念: 3、事务执行的指令 4、事务实现 素材: 通过事务实现转账功能: #查询状态 SELE

qq_41824825的博客 1053

数学建模学习(120):使用Python实现基于AHP的供应商选择分析

使用Python实现基于AHP的供应商选择分析

全栈川川 915

09.jdbc

事务是最小的原子单元,执行一条或者是多条sql语句的时候,要么同时执行成功,要么同时执行失败1.A:原子性:事务是最小原子单位,不能在进行分割2.C:一致性:要么提交前的状态,要么是提交后的状态,同时执行成功或者是失败3.I:隔离性:每一个事务是相互隔离,互不影响4.D:持久性:一旦commit提交之后数据将永久保存到数据中视图是指计算机数据库中虚拟表,其内容由查询定义,同真实的表一样1.简单性:看到的就是需要的2.安全性:通过视图用户只能查询和修改他们所能看到的数据create view 视图名 as 查

故园风雨前的博客 3343

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java中的MySQL数据库与JDBC编程笔记

一.JDBC基础:     JDBC的全称为Java Database Connectivity,即Java数据库连接,是一种可以执行SQL语句的Java API。程序可通过JDBC API连接到关系数据库,并使用结构化查询语句(SQL,数据库标准的查询语句)来完成对数据库的查询、更新。 为了让JDBC在不同的平台上运行,需要中间的驱动程序。JDBC可以完成三个基本的工作:建立与数据库的连接;

wangyongyao1989的博客 538

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL 基础笔记 & JDBC

MySql 数据库优点:1.持久化存储数据。 2.方便管理数据 连接本机数据库,可以简写:jdbc:mysql:///test 备份数据库:mysqldump -u用户名 -p密码 数据库名称 &amp;gt; 保存的路径 数据库类型: int:整数类型 double:小数类型 date:日期,只包含年月...

吃茫茫的博客 319

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySql,JABC基础整理笔记

自己整理的相关Mysql JDBC相关笔记,主要知识点,用来翻阅查询巩固相关知识

love__1232的博客 443

Mysql和JDBC简单总结知识点

JavaWeb 什么是JavaWeb? 使用Java语言开发互联网项目,简单理解:使用Java语言开发网站 数据库 DateBase 简称:DB 什么数据库? 用于存储和管理数据的仓库 数据库的特点: 1.持久化存储数据的,其实数据库就是一个文件系统 2.方便存储和管理数据 3.使用了统一的方式操作数据库 SQL MySQL的卸载 1.去MySQL的安装目录找到my.ini文件 datadi...

qq_45945673的博客 1133

4.7~4.9学习总结

学习总结

weixin_73048842的博客 566

Mysql 基础内容完全学习笔记(Mysql 8.0.22)2021年1月8日

文章目录基础sql更新mysql的登陆密码查看所有的数据库切换数据库查看选择的库中所有的表显示数据库中所有的表的信息创建数据库退出连接数据库的几种语言操作数据库创建数据库移除数据库拓展操作表创建表修改表删除表mysql 数据管理外键(了解,一般不使用)1.创建表的时候增加外键2.在已有表上添加约束操作字段插入字段修改字段设置单个属性设置多个属性条件表达式删除字段DQL 查询数据(最重要)DQLselect语法查询起别名函数去重查询系统版本计算表达式查询自增步长查询结果更改where 条件子句模糊查询字符串通

MyMesakas的博客 369

MySQL笔记

MySql笔记

qq_24029363的博客 1049

第五周预习-数据库

tinyint ( 1 byte) 、smallint (2 bytes)、 mediumint (3 bytes )、int或integer ( 4 bytes)、 bigint (8 bytes)、 float (4 bytes)、 double(8 bytes)、 decimal(范围依赖于M(精度,数值长度)和D(标度,小数位数)的值)常用权限:ALL (所有权限),SELECT,INSERT,UPDATE,DELECT,ALTER,DROP,CREATE。),(值1,值2,…

zch_fhjb的博客 870

MySQL学习

MySQL SQL分类: DDL:数据定义语言 Data Definition Language,负责数据结构定义与库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成。 DML:数据操作语言 Data Manipulation Language,负责对数据库对象运行数据访问工作的指令集,以 INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。 DQL:数据查询语言 Data Query Language,负责进行数据查询而不会对数据本身进行修改的语

m0_51970364的博客 490

java持久化一个数据到内存,Java持久化复习

1.第一章(概述):●什么是对象持久化?为什么要持久化?●对象持久化的最佳方式是什么?●关系型数据库的基础概念;●什么是实体,关系?三种基本关系:一对一、一对多、多对多;●关系型数据库工作原理:数据库引擎+数据;两种类型:本地数据库管理系统、数据库服务器管理系统;目前流行的主要RDBMS有哪些?●什么是SQL,SQL语句的分类:DDL 、DML、DCL;2.第二章(创建表和索引):●如何创建、删除...

weixin_35703673的博客 395

Mysql数据库详解(看B站狂神mysql记得课后笔记)

Mysql数据库入门详解 数据库的分类 关系型数据库(SQL) MySQL,Oracle,Sql Server ,DB2,SQLlite 通过表和表之间,行和列之间的关系进行数据的储存,学员信息表,考勤表 非关系型数据库(No SQL) Redis,MongDB 非关系型数据库,对象储存,通过对象的自身的属性来决定 DBMS(数据库管理系统) 数据库的管理软件,科学有效的管理我们的数据,维护和获取数据; MySQL,数据管理系统 使用数据库管理工具创建一个数据库 数据库字符集要选utf8mb

诺米的博客 5249

SQL学习笔记

学习sql过程中的一些小

weixin_68546413的博客 383
上一篇: 多表查询 事务
下一篇: HTML
ClassGoldenSea
博客等级 码龄7年 2粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值