JDBC其实就是JAVA连接数据库
本质是一套接口。
悲观锁,排队运行别人执行不完,只能等。
乐观锁,也是别人也能访问,它会先得到一个版本号,如果与自己得到的版本号相符则执行。否则回滚。
行级锁也叫悲观锁,
在sql语句最后加上for update,意思是在这个事务没有完成之前谁也不能动这个数据。
以上过程,开启事务,执行sql,设行级锁,显示结果,提交事务,打开锁。
JDBC的事务自动提交。
JDBC之中有三个角色,第一个各种数据库迎合SUN公司写数据库的驱动(也就是接口实现类的集合,一个Jar包)
第二个是JAVA工程师,调用接口。
第三个,接口。
驱动的使用:需要环境变量,下载好的jar包,需要新建一个名叫classpath路径,内容为
.;绝对路径;
这个“ . ”是当前路径然后用英文";”隔开之后写绝对路径。
JDBC编程的步骤:
- 注册驱动(告诉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这个接口。
这个接口的增删改:
关于事务:想要用事务就要关闭自动提交。
设置自动提交,关闭。
手动提交。
如果有问题则回滚:在异常里写回滚。