JDBC原理

JDBC其实就是JAVA连接数据库

本质是一套接口。

悲观锁,排队运行别人执行不完,只能等。

乐观锁,也是别人也能访问,它会先得到一个版本号,如果与自己得到的版本号相符则执行。否则回滚。

行级锁也叫悲观锁,

在sql语句最后加上for update,意思是在这个事务没有完成之前谁也不能动这个数据。

 

以上过程,开启事务,执行sql,设行级锁,显示结果,提交事务,打开锁。

JDBC的事务自动提交。

JDBC之中有三个角色,第一个各种数据库迎合SUN公司写数据库的驱动(也就是接口实现类的集合,一个Jar包)

第二个是JAVA工程师,调用接口。

第三个,接口。

驱动的使用:需要环境变量,下载好的jar包,需要新建一个名叫classpath路径,内容为

.;绝对路径;

这个“ . ”是当前路径然后用英文";”隔开之后写绝对路径。

JDBC编程的步骤:

  1. 注册驱动(告诉JVM即将使用什么数据库)

第二种方法(常用的)

使用类加载注册驱动

Class.forname(完整驱动名);

 

2. 获取连接(创造连接对象,构造方法里传入,url"统一资源定位符,网络中的绝对路径:包括协议,IP,port资源名",然后是用户名,密码)

!!!!非常重要,只有协议后面会用双杠//其他的都是单杠/!!!!!

 以上对,一下错

 3. 获取数据库操作对象(这相当于一个命令上传机器,所有对数据库的控制语句,都用字符串的方式传到这个对象的一个方法里)

 4. 执行SQL语句(传入的字符串执行,字符串不需要加;)

 

 5. 处理查询结果集(针对DQL语句)

6. 关闭通道(从小到大的关,先关数据库操作对象再关连接对象。)

!!注意关闭的条件是不等于!=           不是等于==

一个完整的代码:

 

 

 

 

5.处理查询结果集:

首先new出一个查询结果集对象名字为:

resultset

 

 

这个对象用数据库操作对象里的方法返回。方法为executeQuery专门用来select用来返回一个查询结果集,而executeUpdate不一样他是用来insert和update和delete的用来返回更新了多少条数据int类型。

query翻译为,查询

返回一个Resultset对象,对象里有get方法

例如,getString方法可以将所有读取到的数作为:String返回,其他基本类型也一样。

 

而得到查询结果集还需要遍历。

rs.next();判断是否还有下一行。

而re.getString(下标或者“字段名”);如果写下标那么从1开始不是从0开始。

特定的类型可以用特殊的取出,甚至可以做运算。

运用Statment会产生sql语句注入现象

就是输入的密码有sql语句的关键字导致改变了sql语句的愿意,例如:

 

密码写了shshsh or '1'='1

 

以上就是注入。有时候也会故意用到注入。

而换一种新的方式:占位符不能用单引号否则将认不出占位符。

 

 

以上使用了preparedStatement这个接口。

这个接口的增删改:

 

 

 关于事务:想要用事务就要关闭自动提交。

 

 设置自动提交,关闭。

 

手动提交。

如果有问题则回滚:在异常里写回滚。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏与ta

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值