JDBC

20145217 《Java程序设计》第九周学习总结

教材学习内容总结

本章主要讲输入与输出。

16.1JDBC简介

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。

换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。

盗图一张:


16.2连接数据库

JDBC 是个"低级"接口,也就是说,它用于直接调用 SQL 命令。在这方面它的功能极佳,并比其它的数据库连接 API 易于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。

高级接口是"对用户友好的"接口,它使用的是一种更易理解和更为方便的 API,这种API在幕后被转换为诸如 JDBC 这样的低级接口。

为了要连接数据库系统,必须要有厂商操作的JDBC驱动程序,必须在CLASSPATH中设定驱动程序JAR文档

16.3JDBC进阶

  • 1.使用ResultSet卷动、更新数据

在ResultSet时,默认可以使用next()移动数据光标至下一笔数据,而后使用getXXX()方法来取得数据。结果集类型可以指定3种设定:ResultSet.TYPEFORWARDONLY(默认)、ResultSet.TYPESCROLLINSENSITIVE、ResultSet.TYPESCROLLSENSITIVE。更新设定可以有两种指定:ResultSet.CONCURREADONLY(默认)、ResultSet.CONCUR_UPDATABLE。如果要使用ResultSet进行数据修改,则有些条件限制:必须选取单一表格、必须选取主键、必须选取所有NOT NULL的值。

  • 2.批次更新

每一次执行executeUpdate(),其实都会向数据库发送一次SQL,如果大量更新的SQL有一万笔,就等于通过网络进行了一万次的信息传送,网络传送信息实际上必须打开I/O、进行路由等动作。所以最好就是所有收集的SQL,最后会串为一句SQL,然后传送给数据库,既然是批次更新,顾名思义,就是仅用在更新上,所以批次更新的限制是,SQL不能是SELECT,否则会抛出异常。

  • 3.Blob与Clob

如果要将文档写入数据库,可以在数据库表格字段上使用BLOB或CLOB数据类型,BLOB用于存储大量二进制数据,像是图档、影音档等,CLOB用于存储大量的文字数据。

  • 4.交易简介

交易的四个基本要求是原子性、一致性、隔离行为与持续性。当多个交易并行时,可能引发的数据不一致问题有哪些呢?(1)更新遗失:基本上就是指某个交易对字段进行更新的信息,因另一个交易的介入而遗失更新效力。(2)脏读:两个交易同时进行时,其中一个交易更新数据但未确认,另一个交易就读取数据,就有可能发生脏读问题。(3)无法重复的读取:某个交易两次读取同一字段的数据并不一致。(4)幻读:同一交易期间,读取到的数据笔数不一致。

  • 5.metadata简介

Metadata即“诠读数据的数据”,数据库是用来存储数据的地方,然而数据库本身产品名称为何?数据库中有几个数据表格?表格名称为何?表格中有几个字段等?这些都是metadata。

  • 6.RowSet简介

JDBC定义了java.sql.RowSet接口,用以代表数据的列集合,这里的数据并不一定是数据库中的数据,可以是电子表格数据、XML数据或任何具有列集合概念的数据源。RowSet定义了列集合基本行为,其下有JdbcRowSet、CachedRowSet、FilteredRowSet、JoinRowSet、WebRowSet五个标准列集合子接口。JdbcRowSet是联机式的RowSet,也就是操作JdbcRowSet期间,会保持与数据库的联机,可视为取得、操作ResultSet的行为封装,可简化JDBC程序的撰写,或作为JavaBean使用。CachedRowSet为脱机式的RowSet,在查询并填充完数据后,就会断开与数据源的联机,而不用占据相关联机资源,必要时也可以再与数据源联机进行数据同步。

上传代码到git


学习感想:

本周按计划看完了厚厚的JDK学习笔记,算下来两个多月过去了,两个月是十分充实的当然也是忙碌的,收获自然也是颇多。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第三周 300/600 2/6 20/50
第四周 300/900 2/8 16/66
第五周 300/1200 2/10 16/82
第六周 300/1500 2/12 16/98
第七周 200/1700 2/14 16/110
第八周 260/1960 2/16 16/126
第九周 320/1960 2/18 24/150

参考资料

原文地址:https://www.cnblogs.com/jokebright/p/5450902.html