2020-8-16 JavaWebDay_03

事务:

事务的四大特征:

1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败;

2.持久性:如果事务一旦提交或者回滚后,数据库会持久化的保存数据;

3,隔离性:多个事务之间,相互独立;

4.一致性:事务操作前后,数据总量不变;

事务的隔离级别:

概念:

多个事务之间是隔离的,相互独立的,但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题;

存在问题:

1.脏读;

2.不可重复读(虚读);

3.幻读;
脏读:
一个事务读取到另一个事务中没有提交的数据;
不可重复读(虚读):
在同一个事务中两次读取到的数据不一样;
幻读:
一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改;

隔离级别:

1.read uncommitedL读未提交;

产生的问题:脏读,不可重复读,幻读;

2.read commited:

产生的问题:不可重复读,幻读;

3.repetable read:可重复读(MySQL默认):

产生的问题:幻读;

4.serializable:串行化;

可以解决所有的问题;

注意:隔离级别从小到大,安全性越来越高,效率越来越低;

数据库查询隔离级别:

select @@tx_isolation;

数据库设置隔离级别:

set global transaction isolation level 隔离级别字符串;

DCL:

管理用户,授权;

管理用户:

添加用户:

create user '用户名'@'主机名' identified by密码;

删除用户:

drop user '用户名'@‘主机名’;

修改用户密码:

update user set password = password('新密码') where user='用户名';

set password for'用户名'@'主机名'=password('新密码')[MySQL];

查询用户:

1.切换到mysql数据库;

2.查询user表;

3.%表示可以在任意主机使用用户登录数据库;

忘记了root用户的密码:

1.cmd-->net stop mysql 停止mysql服务;

	需要管理员运行cmd;

2.使用无验证方式启动mysql服务:mysqld--skip-grant-tables;

3.打开新的cmd窗口,直接输入mysql命令,敲回车登录;

4.use mysql;

.5.update user set password =password('新密码') where user='root';

6.关闭两个窗口;

7.打开任务管理器,手动结束mysqld.exe进程;

8.启动mysql服务;

9.使用新密码登录;

DCL权限管理:

查询权限:

show grants for '用户名'@‘主机名’;

授予权限:

grant 权限列表 on 数据库.表 to' 用户名'@'主机名';

所有权限:

grant all on *.* to '用户名'@'主机名';

撤销权限:

revoke 权限列表 on数据库.表 from '用户名'@'主机名';

JDBC:

概念:

Java DataBase Connectivity java数据库连接;

本质:

其实是官方(sun 公司)定义的一套操作所有关系型数据库的规则,即接口.各个数据库厂商实现这套接口,提供数据库与区动jar包,我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类‘

操作步骤:

1.导入jar包;

2.注册驱动;

3.获取数据库连接对象 Connection;

4.定义sql语句;

5.获取执行sql语句的对象 statement;

6.执行sql,接收返回结果;

7.处理结果;

8,释放资源;

各个对象:

DriverManager:

驱动管理对象;

功能:注册驱动;

static void registerDriver(Driver driver);

写代码使用:

Class.forName("com.mysql.jdbc.Driver");

通过查看源码,发现:在com.mysql.jdbc.Driver类中存在静态代码块,通过DriverManager注册驱动;

注意:MySQL5后的驱动jar包可以省略注册驱动;


获取数据库连接;

static Connection getConnection(String url,String user,String password);

参数:

url:指定连接的路径;

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称;

user:用户名;

password:密码'

细节:如果连接的是本地服务器,IP地址和端口号可以不写;

Connection:

获取执行sql语句的对象;

Statement createStatement();

PreparedStatement preparedStatement(String sql);

管理事务:

开启事务:

setAutoCommit(boolean autocommit):设置参数为false,则开启事务;

提交事务:

commit();

回滚事务:

rollback();

Statement:

执行sql:

boolean execute(String sql):可以执行任意sql语句;

int executeUpdate(String sql):执行DML语句,DDL语句;

返回值int:影响的行数,如果>0,则操作成功,反之失败;

Resultset executeQuery(String sql):执行DQL语句;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值