JDBC总复习-上、JDBC总复习-下

01-JDBC概述

2.JDBC的理解
简单理解为:JDBC,是SUN提供的一套API,使用这套API可以实现对具体数据库的操作(获取连接、关闭连接、DML、DDL、DCL)

3.好处
从开发程序员的角度:不需要关注具体的数据库的细节。
从数据库厂商的角度:只需要提供标准的具体实现。

4.数据库的驱动:
数据库厂商针对于JDBC这套接口,提供的具体实现类的集合。

03-Statement接口实现CRUD操作()
Statement使用的弊端
Scanner scan = new Scanner(System.in);
String name = scan.next();
....
拼串
String sql = "insert into customers(name,email,birth) values('" + name + "','" + email + "','"" + birth + ')";
SQL注入:
SELECT user,password FROM user_table WHERE user = '1' or ' AND password = '=1 or '1' = '1'

其他问题:
Statement没办法操作Blob类型变量
Statement实现批量插入时,效率较低

04-PrepareStatement替换Statement实现CRUD操作
1.PrepareStatement的理解
①PrepareStatement是Statement的子接口
②预编译SQL语句
③可以解决Statement的sql注入问题,拼串问题

总结
两种思想:
面向接口编程的思想
ORM编程思想
两种技术:
1.使用结果集的元数据:ResultSetMetaData
	getColumnCount():获取列数
	getColumnLabel:获取列的别名
2.反射的使用(①创建对应的运行时类的对象   ②在运行时,动态的调用指定的运行时类的属性、方法)


05-PrepareStatement可以操作Blob类型的变量。
写入操作的方法:setBlob(InputStream is)
读取操作的方法:
Blob blob = getBlob(int index);
InputStream is = blob.getBinaryStream();

06-测试使用PrepareStatement实现批量操作:
层次一:使用Statement实现
层次二:使用PerpaerStatement替换Statement
层次三:addBatch() / excuteBatch() / clearBatch()
层次四:设置连接不允许自动提交数据

总结:PerparedStatement与Statement的异同?
①指出二者的关系?接口 与 子接口的关系
②开发中,PerparedStatement替换Statement
③PerparedStatement是预编译SQL语句的

07-数据库的事务
事物的数据
四大属性:ACID
1.原子性
2.一致性
3.隔离性
4.持久性
数据操作过程中可能出现的问题:(针对隔离性)
脏读
不可重复读
幻读
数据库的四种隔离级别:(一致性和并发性:一致性越好,并发性越差)
READ UNCOMMITTED(读未提交数据)
READ COMMITTED(读已提交数据)
REPEATABLE READ(可重复读)
SERIALIZABLE(串行化)

08-DAO及其子类
总结:考虑到事务以后的数据库操作(重点)
1.获取数据库的连接
Connection conn = JDBCUtils.getConnection();   //方式1:手动获取连接	方式2:数据库连接池
conn.setAutoCommit(false);		          //体现事务

2.如下的多个DML操作,作为一个事务出现:
操作1:需要使用通用的增删改查操作	         //通用的增删改查操作如何实现?
操作2:需要使用通用的增删改查操作	         //方式1:手动使用PreparedStatement实现
操作3:需要使用通用的增删改查操作	         //方式2:使用dbutils.jar中QueryRunner类

conn.commit();

3.如果出现异常,则:
conn.rollback();

4.关闭资源
JDBCUtils.closeResource(...,...,...)		         //方式1:手动关闭资源   //方式2:DbUtils类的关闭方法

09-数据库连接池
2.如何解决传统开发中的数据库连接问题:使用数据库连接池
3.使用数据库连接池的好处:
自己组织语言:
	1.提高程序的响应速度(减少了创建连接相应的时间)
	2.降低资源的消耗(可以重复使用已经提供好的连接)
	3.便于连接的管理
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇