1.jdbc 概念
2.核心类
DriverManager
管理JDBC驱动
Connection
负责连接数据库并担任传送数据的任务
Statement
由 Connection 产生、负责执行SQL语句
PreparedStatement
预编译sql,由 Connection 产生、负责执行SQL语句
CallableStatement
由 Connection 产生、负责执行SQL语句,执行存储过程
ResultSet
负责保存Statement执行后所产生的查询结果
3.Statement与PreparedStatement区别
Statement执行顺序
1.进行sql语法校验,语法错误就报错了
2.校验权限,权限不够报错
3.会从sql缓存区去找有没有这条sql
有就直接执行
没有就添加到缓存区,再执行
PreparedStatement
3.会减少添加缓存区sql的次数,条数。
区别:
1)Statement 执行相对于PreparedStatement来说会不安全
Statement 会有sql注入
PreparedStatement 可以预防sql注入
2)PreparedStatement效率高
推荐以后使用PreparedStatement。
4.把数据库的信息放到配置文件中 db.properties
5.批处理
addBatch 添加一条sql到Statement中。
executeBatch() 统一执行一组sql。
步骤:
1,获取对象
Statement
PreparedStatement : 创建这个对象的时候,传入的sql是可以为""空字符串的
2.添加一些sql的集合
addBatch
3.执行这些sql
executeBatch
6.获取自增长的值
connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
注意:Statement.RETURN_GENERATED_KEYS
获取返回的自增长id
ResultSet resultSet = prepareStatement.getGeneratedKeys();
7.大文本处理
1.txt.html,xml
mysql : text(64K),meduimtext(16M),longtext(4G)
oracle : clob
代码
写入:
FileReader reader = new FileReader(file);
prepareStatement.setClob(2, reader);
读出:
Clob clob = resultSet.getClob("description");
Reader reader = clob.getCharacterStream();
2.二进制,图片
mysql: blob,meduimblob,longblob
oracle:blob
代码
写入:
File file = new File("f:\\one.jpg");
FileInputStream inputStream = new FileInputStream(file);
prepareStatement.setBlob(2, inputStream);
读出:
Blob blob = resultSet.getBlob("img");
InputStream inputStream = blob.getBinaryStream();
8.时间处理
date 只存储年月日
time 只存储时分秒
timestamp 存储年月日时分秒
代码
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date = format.parse("1982-07-29 12:00:00");
prepareStatement.setTimestamp(2, new Timestamp(date.getTime()));
9.事务
概括
把一组sql放到一起去执行,要么都成功,要么都失败。
操作
提交
回滚
事务的特点
原子性
要么都成功,要么都失败
隔离性
事务与事务之间互不干扰
问题:
脏读
一个事务读取了另外一个事务未提交的数据
不可重复读
一个事务读取了另外一个事务已经更新的数据
幻读
一个事务读到了另外一个事务已经提交的插入数据
解决这些问题,就有事务的隔离级别
serializable 最高级别 不支持脏读,不支持不可重复读,不支持幻读(默认)
repeatable read 不支持脏读,不支持不可重复读,支持幻读
read committed 不支持脏读,支持不可重复读,支持幻读
read uncommitted 支持脏读,支持不可重复读,支持幻读
一致性
执行前和执行后结果应该一致
持久性
事务提交,保存到数据库
网友评论