一 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 drop 删除 select 查询
update 修改记录,
DQLAll 代表所有的权限[慎重]
- . *所有库,所有表[慎重]
- 数据库名.[经常使用]
1.3查看权限
Show grant for ‘用户名’@’主机地址’
1.4 撤销授权
Revoke 权限1,权限2…on数据库名,表名 from ‘用户名’@’主机地址’;权限
All 代表所有的权限[慎重]
. 所有库.所有表[慎重]
数据库名.[经常使用]
1.5 删除用户
Drop user ‘用户名’@’主机地址’;
1.6密码管理
a)超级管理员Mysqladmin -u用户名 -p passwrod(加密) 新密码
b)普通用户set password for ‘用户名’@’主机地址’=password(‘新密码’);
二 JDBC【重点】
2 .1 概述
java dataBase Connectivity 数据库连接 就是通过java 来进行操作数据库JDBC; 是关系型数据库的一套规范(接口),对我们只需要学习接口的方法即可驱动;是mysql厂商提供给我们的(jar)
2.2 初体验
需求在java控制台输出数据库查询结果
1.创建数据库表和表记录
2.创建java工程
3.导入jar包Mysql驱动
4.编写代码
//创建连接数据库
//1.1 注册 驱动
//1.2 导入地址 - 获取连接
//编写sql语句
//传入语句(小货车)-创建语句执行者
//传回语句并返回结果(执行sql并返回结果)
//检查 - 处理结果
//关闭资源
2.3 API 详解
都是sun 公司提供的规范;java.sql.*
DriverManager;用于管理一组JDBC驱动程序的基本服务确定java代码连接那个服务器.
//注册驱动 DriverManager.registerDriver(Driver mysql实现类)
静态代码块已经帮我们实现类注册驱动的功能,我们只需要把com.mysql.jdbc 类,加载到jvm虚拟机内存并初始化Class.forName(“com.mysql.jdbc”)
;//获取连接
2.3.1
DriverManager.getConnection(String 数据库, String 用户名, String 密码);
数据库地址;格式固定
Jdbc;mysql;//主机地址:端口号/数据库名;
Jdbc:mysql://localhost:3306/db_day04;
Jdbc;mysql;///bd_day04;
Jdbc;mysql;///db_day04/?CharacterEncoding=utf-8;·
2.3.2
Connection ;调试器和调试器之间的连接
让java代码与数据库建立通道
//创建语句执行者(小货车)进今天学习,后续不用 有bug
Public Statement createStatement();
//创建预编译语句执行者(高铁) 今后使用,很重要
Public PreparedStatement prepareStatement(String sql);
//事务安全
2.3.3
Statement把java代码编写sql传递给数据库,并返回数据库的结果
//执行sql语句[了解]
Public boolean execute (String sql);执行dml(增删改)语句返回false,执行dql(查) 语句返回true
//执行dml语句
Public int executeUpdate(String dml);返回结果为影响行数
//执行dal语句
Public ResultSet exectueQuery(String dql);返回结果虚拟表
2.3.4
ResultSet
用于接收数据库查询的虚拟变结果集
//指针下移Public boolean next();若有记录返回则就返回true,若没有记录返回false;
//获取记录Public T getXxx(int 第几列 | String 列名);//特殊GetString 可以获得全部类型 底层进行转换(数值 , 日期)
流程图
2.4
实现增删改
增加
删除
修改
2.5 工具类
我们在操作JDBC时发现,获取连接、关闭资源等代码属于公共部分,抽取到工具类,简化代码,提高效率
步骤分析-
// 提供获取连接的方法
// 提供关闭资源的方法 【方法重载】
代码片段参考 com.itheima.c_utils包下
2.6事务安全
需求
张三给李四转账
技术分析
通过Connection操作事务
//开启事务 关闭自动提交时
Public void setAutoCommit(boolean false)
;// 提交事务
Public void commit();
// 回滚事务
Public void rollback()步骤准备
1 准备表记录
2 编写代码(jbdc)
//获取连接
//开启事务
//创建语句执行者(小货车
//雨琪扣钱
//巴元加钱
//提交事务
//回滚事务
//关闭资源
2.7 案例用户登录
需求
模拟用户登录需求
分析
在控制台输入用户名和密码,根据用户名和密码查询数据库,根据返回结果看用户是否登录成功
步骤分析
//在控制台输入用户名和密码scanner技术
//根据用户名和密码查询数据库jdbc技术
//根据数据库返回结果判断用户是否登录成功id else技术
配置文件
将连接数据库和关闭资源 写入方法中 节约资源
在sun公司专门提供了一个工具类ResourceBundle资源包专门用于加载propreties 这个配置文件的key
代码片段
在登录用户需求中有一个bug 是非常致命的,下一篇文章进行讲解
进行理顺这篇章的思路, 代码的优化
初体验 在初测驱动 需要一个实现类 mysql 提供;了一个 Driver 来 newDriver进行实现,可是我们发现 静态代码块已经帮助我们实现了,我们这需要把类加载到虚拟机里面Class.forName(“com.mysql.jdbc.Driver”); 之后在进行增删改的时候我们需要每次都写连接 和 关闭资源, 这样很浪费资源,我们可以进行写成方法进行调用,这样省时省力,在写关闭资源是,写两个调用一个是 dml(增删改)时 需要关闭两个资源,dql(查询)时,需要关闭三个资源 . 在注册和连接的时需要写driver,url,user,password 四个固定的常量,则我们可以把它们放在配置文件中, 就是文件 JDBC.properties文件, 而java为我们提供了一个专门加载properties的方法,ResourceBundle加载文件的key,