Java学习笔记-Java基础21(JDBC高级编程)

1.PreparedStatement:继承自Statement,执行的SQL语句是预编译的,以“”为占位符,在执行前利用合适的set方法提供“?”的实际内容。它的三种execute方法都不需要参数,运行起来比Statement。PreparedStatement可以重用SQL,具有缓存功能,可以实现批量处理和防止SQL注入攻击

    1)建立连接

    2)编写SQL语句

    3)创建PreparedStatement对象

    4)补充SQL语句

    5)执行SQL语句

    6)处理结果集

    7)关闭连接


    ---PS1:DBUtil2是自己写的一个类,里面封装了获取连接和关闭连接的方法

    ---PS2:PreparedStatement的三个执行方法遵循的原则与Statement一样,只是不需要参数

2.元数据:从查询结果集中获取关于记录的其他信息

    ---ResultSetMetaData getMetaData();


3.可滚动结果集:常用的ResultSet获取的结果集,只能通过next方法获取下一条记录,不能反向移动,不能跳行。可滚动结果集指针可以随意滚动到任一行,甚至可以感知数据变化。一般不会用


    ---PS1:感知数据变化的意思是在遍历结果集的过程中可以修改记录,然后数据库会同步改变

    ---PS2:resultSetType和resultSetConcurrency的取值都是ResultSet的设定好的常量

4.事务:数据库中保证数据可靠的机制,JDBC是默认提交事务的。事务特性ACID:

    1)原子性(Atomicity):事务必须是原子单位,数据操作要么全部执行,要么全部不执行

    2)一致性(Consistency):事务在完成时,数据都保持一致的状态

    3)隔离性(Isolation):并发事务修改与其他并发事务所做的修改隔离

    4)持久性(Durablity):事务完成后,对系统的影响是永久性的

5.JDBC事务API:

    1)Connection.getAutoCommit():获取当前事务的提交方式

    2)Connection.setAutoCommit():设置事务的提交方式,参数:true,自动提交;false:不自动提交

    3)Connection.commit():提交事务

    4)Connection.rollback():回滚事务

6.批量更新API:用于执行DML操作


    ---PS1:Statement类有类似方法为addBatch(String sql)

    ---PS2:executeBatch()执行批量,clearBatch()清空批量,二者都适用于Statement和PreparedStatement对象

7.获取主键值:在创建PreparedStatement对象时使用Connection重载方法,要求除传入第一个参数(SQL语句)外,需要传入第二个参数(一个字符串数组,里面的元素为需要返回的列名)


    ---PS1:字符串中填写需要返回的列名

    ---PS2:ResultSet getGenerateKeys(),该方法可以获取主键值

    ---PS3:ORACLE支持的获取方法

8.分页查询:

    1)有两种方式,一是:每次只返回一页的数据,内存压力小,适合大数据量的查询;二是:一次性将数据缓存到内存中,但是只显示需要的一页数据,内存压力大,适合小数据量的查询(假分页)

    2)不同数据库,对分页有不同的实现方式,ORACL是分三层结构的方式(前面有写),而MySQL的分页查询语句是:

        ---select * from t limit begin(从第几条开始),pageSize(每页显示的条数)

9.DAO:数据库访问对象,封装了对数据库的所有操作,隔离数据库和业务层,使Java操作数据库面向对象化。DAO层需要定义对表的映射关系,包括:

        ---表和类对应

        ---列名和类属性对应

        ---记录和对象对应

猜你喜欢

转载自blog.csdn.net/justdi0209/article/details/80393824