20145304《Java程序设计》第九周学习总结
教材学习内容总结
JDBC简介
- JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范。定义了一组标准类与接口,应用程序需要联机数据库时调用这组标准API,而标准API中的接口会由数据库厂商操作,通常称为JDBC驱动程序。
- JDBC标准主要分为两个部分:JDBC应用程序开发者接口以及JDBC驱动程序开发者接口。
- 应用程序需要联机数据库,就是调用JDBC应用程序开发者接口,相关API主要在java.sql与javax.sql两个包。
- 依操作方式可将驱动程序分为四种类型:JDBC-ODBC Bridge Driver、Native API Driver、JDBC-Net Driver、Native Protocol Driver。
- Connection接口的操作对象是数据库联机代表对象,要取得Connection操作对象,可以通过DriverManager的getConnection(),除了基本的用户名称、密码之外,还必须提供JDBC URL,其定义了连接数据库时的协议、子协议、数据源识别。
- 取得Connection对象之后,可以使用isClosed()方法测试与数据库连接是否关闭。在操作完之后,若确定不再需要连接,则必须使用close()来关闭与数据库的连接,以释放链接是相关的必要资源。
- Connection是数据库连接的代表对象。
- 使用Connection的createStatement()建立Statement对象,取得Statement对象之后,可以使用executeUpdate()、executeQuery()等方法来执行SQL。
- executeUpdate()主要用来执行CREATE TABLE、INSERT、DROP TABLE、ALTER TABLE等会改变数据库的SQL。
- getXXX()方法都提供有依域名取得数据,或是依字段顺序取得数据的方法。
- Statement的execute()可以用来执行SQL,并可以测试SQL是执行查询或更新。
- Statement或ResultSet再不使用时,可以使用close()将之关闭,以释放相关资源。Statement关闭时,所关联的ResultSet也会自动关闭。
-
日期时间在JDBC中,并不是使用java.util.Date,这个对象可代表的日期时间格式是“年、月、日、分、秒、毫秒”,在JDBC中要表示日期,是使用java.sql.Date,其日期格式是“年、月、日”,要表示时间的话则是使用java.sql.Time,其格式时间为”时、分、秒”,java.sql.Timestamp表示“时、分、秒、微秒”的格式。
JDBC进阶
- 在ResultSet时,默认可以使用next()移动数据光标至下一笔数据,而后使用getXXX()方法来取得数据。
- 在数据光标移动的API上,可以使用absolute()、afterLast()、beforeFirst()、first()、last()进行绝对位置移动,使用relative()、previous()、next()进行相对位置移动,移动成功返回true。
- 可使用isAfterLast()、isBeforeFirst()、isFrist()、isLast()判断当前位置。
- 数据更新,必须移动至要更新的列,调用updateXXX()方法,而后调用updataRow()方法完成更新,调用cancelRowUpdates()可取消更新,但必须在调用updataRow()前进行更新的取消。
- insertRow()新增数据,deleteRow()删除数据列。
- BLOB用于存储大量的二进制数据;CLOB用于存储大量的文字数据。
- 交易的四个基本要求是原子性、一致性、隔离行为与持续性,依英文字母首字母简称为ACID。
- 在交易管理时,仅想要撤回某个SQL执行点,则可以设定存储点。
- 更新遗失时指某个交易对字段进行更新的信息,因另一个交易的介入而遗失更新效力。
- 脏读数据,指不干净,不正确的数据。
- 无法重复读取:某个交易两次读取同一字段的数据并不一致。
- 幻读:同一交易期间,读取到的数据笔数不一致。
JdbcRowSet是联机式的RowSet,CachedRowSet则为脱机式的RowSet。
教材学习中的问题和解决过程
- 这周学习任务较多时间较紧,看的不是很仔细,有一些没有太理解,但没有问题的头绪,会继续学习这三章,等有问题在做补充。
代码调试中的问题和解决过程
- 这周代码调试,没有出现较大问题
其他(感悟、思考等,可选)
- 这周就按计划应该学完整本书了,虽然书都看了一遍,但感觉自己掌握得还不是很好,有很多东西没有实践过,很多实践过但记忆不深,已经忘记了很多,感觉没有办法很熟练的编写代码,还是需要翻书找相关的知识,还需要在今后的实践中加深记忆,争取早日熟练的使用Java编程。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第八周 | 200/1410 | 3/14 | 40/240 |