1 JDBC进行批处理
1.1 为什么要用批处理?
一次操作只能发送一条sql语句到数据库服务器,效率并不高!
如果要插入2000条记录,那么必须发送2000条sql语句。
现在:插入2000条记录,但现在使用sql缓存区,一次发送多条sql到数据库服务器执行。这种做法就叫做批处理。
类似于IO流,一次写出一个字节,显然效率效率并不高,所以使用缓存字节数组提高每 次写出的效率。
1.2 JDBC批处理的API
Statement批处理:
void addBatch(String sql) 添加sql到缓存区(暂时不发送)
int[] executeBatch() 执行批处理命令。 发送所有缓存区的sql
void clearBatch() 清空sql缓存区
PreparedStatement批处理:
void addBatch() 添加参数到缓存区
int[] executeBatch() 执行批处理命令。 发送所有缓存区的sql
void clearBatch() 清空sql缓存区
案例:分别测试statement和preparedstatement使用和不使用批处理向学生表插入2000条数据 的效率
2 JDBC获取自增长值
3 JDBC处理大数据文件
3.1 什么是大容量
字符:
存储字符内容: mysql:char(0-255) varchar(0-65535) 长度有限的。65535
大容量的字符字段:
mysql: text(64K) longtext(4G字符内容)
oracle : clob longclob
字节:
mysql: blob(65kb) mediumblob(16mb) longblog(4GB)
oracle: blob
3.1 jdbc操作字符文件
案例:将一片新闻存入数据库
读取新闻:
3.2 jdbc操作字节文件
4 数据库事务
4.1 什么是事务?
所谓的事务,如果把多条sql语句看做一个事务,那么这个事务要么一起成功,要么一起失败!!
4.2 mysql事务操作命令
set autocommit =0 / 1; 设置是否自动提交事务
1: 表示自动提交事务,每执行一条sql语句,自动提交事务。
0: 表示关闭自动提交事务。
commit; 提交事务,一旦提交事务不能回滚
rollback; 回滚事务。回滚到事务的起始点。
4.3 jdbc事务操作
Connection.setAutoCommit(false) 开启事务
Connection.commit(); 成功执行,最后提交事务
Connection.rollback(); 一旦遇到错误,回滚事务
银行转账案例:
4.4事务4大特性(面试中会被问到)
原子性:要么一起成功过,要么一起失败
一致性:数据库应该从一个一致性的状态到另一个一致性的状态,保持不变
隔离性:多个并发事务直接应该可以相互隔离
持久性:事务一旦提交,应该永久保持下来。