20155324 2016-2017-2 《Java程序设计》第9周学习总结
20155324 2016-2017-2 《Java程序设计》第9周学习总结
教材学习内容总结
学习目标
- 了解JDBC架构
- 掌握JDBC架构
- 掌握反射与ClassLoader
- 了解自定义泛型和自定义枚举
- 会使用标准注解
JDBC简介
1.JDBC是java联机数据库的标准规范,它定义了一组标准类与接口,应用程序需要联机数据库时调用这组标准API。
2.JDBC标准:JDBC应用程序开发者接口和JDBC驱动程序开发者接口。
3.应用程序使用JDBC联机数据库:
·Connection conn = DriverManager.getConnection(...);
·Statement st = conn.createStatement();
·ResultSet rs = st.executeQuesry(...);
连接数据库
1.要连接数据库系统,必须要有厂商操作的JDBC驱动程序,必须在CLASSPATH中设定驱动程序JAR文档。
2.操作Driver接口的对象是JDBC进行数据库存取的起点。Connection接口的操作对象是数据库联机代表对象,要取得Connection操作对象,可以通过DriverManager的getConnection():
Connection conn = DriverManager.getConnection(jdbcUrl, username, passwd);
3.在操作完数据库之后,若确定不再需要连接,必须使用close()关闭与数据库的连接,以释放连接时相关的必要资源,如联机相关对象、授权资源等。
使用Statement、ResultSet
1.使用Connection的createStatement()建立Statement对象。
2.Statement的execute()用来执行SQL,并可以测试SQL是执行查询或更新,返回true表示SQL执行将返回ResultSet作为查询结果。
使用PreparedStatement、CallableStatement
1.使用Connection的prepareStatement()方法建立好预先编译的SQL语句,当中参数会变动的部分先指定“?”这个占位字符。
PrepareStatement stmt = conn.prepareStatement("INSERT INTO t_message VALUES(?, ?, ?, ?)");
2.需要真正指定参数执行时,再使用相对应的setInt()、setString()等方法指定“?”处真正应该有的参数。
·stmt.setInt(1,2);
·stmt.setString(2,"momor");
·stmt.executeUpdate();
JDBC进阶
使用DataSource取得联机
1.当MessageDAO的用户无法告知DriverManager有关JDBC URL、用户名称、密码等信息时,可以让MessageDAO依赖于javax.sql.DataSource接口,通过其定义的getConnection()方法取得Connection。
使用ResultSet卷动、更新数据
1.在ResultSet时,默认可以使用next()移动数据光标至下一笔数据,然后使用getxxx()方法来取得数据。
2.ResultSet可以使用previous()、first()、last()等方法前后移动数据光标,还可以调用updatexxx()、updateRow()等方法进行数据修改。
3.结果集类型3种设定:
·ResultSet.TYPE_FORWARD_ONLY(默认)(只能前进数据光标)
·ResultSet.TYPE_SCROLL_INSENSITIVE(前后移动数据光标)
·ResultSet.TYPE_SCROLL_SENSITIVE(前后移动数据光标,反映数据库中的数据修改)
4.更新设定的2种设定:
·ResultSet.CONCUR_READ_ONLY(默认)(进行数据读取)
·ResultSet.CONCUR_UPDATABLE(进行数据读取、更新)
5.数据光标移动的API:
绝对位置移动:absolute()、afterLast()、beforeFirst()、first()、last()。
相对位置移动:relative()、previous()、next()。
判断目前位置:isAfterLast()、isBeforeFirst()、isFirst()、isLast()。
6.数据修改的条件限制:
必须选取单一表格。
必须选取主键。
必须选取所有的NOT FULL的值。
7.数据更新:调用updatexxx()方法,然后调用updateRow()方法。取消更新:调用cancelRowUpdates()。
8.新增数据:先调用moveToInsertRow(),之后调用updatexxx()设定要新增的数据各个字段,然后调用insertRow()新增数据。
9.删除数据列:调用deleteRow()。
- 批次更新
1.每次执行excuteUpdate(),都会向数据库发送一次SQL。批次更新时可以使用addBatch()方法来收集SQL,并使用executeBatch()方法将所收集的SQL传送出去。
- Blob与Clob
1.要将文档写入数据库,可以在数据库表格字段上使用BLOB或CLOB数据类型。
2.BLOB用于存储大量的二进制数据,像是图档、影音档等。CLOB用于存储大量的文字数据。
3.java.sql.Blob与java.sql.Clob两个类分别代表BLOB与CLOB数据。
- 交易简介
1.交易的四个基本要求ACID:原子性、一致性、隔离行为、持续性。
2.更新遗失:某个交易对字段进行更新的消息,因另一个交易的介入而遗失更新效力。如果要避免此类问题,可以设定隔离层级为“可读取未确认”,可以通过Connection的setTransactionIsolation()设定为TRANSACTION_UNCOMMITTED来提示数据库确定此隔离行为。
3.脏读:读取到不干净、不正确的数据。如果要避免此类问题,可以设定隔离层级为“可读取确认”,可以通过Connection的setTransactionIsolation()设定为TRANSACTION_COMMITTED来提示数据库确定此隔离行为。
4.无法重复的读取:某个交易两次读取同一字段的数据并不一致。如果要避免此类问题,可以设定隔离层级为“可重复读取”,可以通过Connection的setTransactionIsolation()设定为TRANSACTION_REPEATABLE_READ来提示数据库确定此隔离行为。
5.幻读:同一交易期间读取到的数据笔数不一致。如果要避免此类问题,可以设定隔离层级为“可循序”,可以通过Connection的setTransactionIsolation()设定为TRANSACTION_SERIALIZABLE来提示数据库确定此隔离行为。
- metadata简介
1.Metadata即诠读数据的数据。
2.可以通过Connection的getMetaD()方法取得DatabaseMetadata对象,通过这个对象提供的各种方法可以取得数据库整体信息,而ResultSet表示查询到的数据,而数据本身的字段、类型等信息,可以通过ResulSet的getMetaData对象,通过这个对象提供的相关方法就可以取得域名、字段类型等信息。
- RowSet简介
1.javax.sql.RowSet接口用以代表数据的类集合,数据可以是电子表格数据、XML数据或任何具有列集合概念的数据源。可以使用RowSet对列集合进行增删查改。
2.JdcRowSet是联机式的RowSet,在操作期间会保持与数据库的联机,可视为取得、操作的行为封装。
3.CachedRowSet为脱机式的RowSet,在查询并填充完数据后就会断开与数据源的联机。
代码托管
上周考试错题总结
- Date 的 API有许多方法都不再建议使用,应改用哪个类别的相关方法取代?
空白部份指定哪些型态可以通过编译?D
A .DateFormat
B .TimeStamp
C .Time
D .Calendar
- Suppose we have an array of String objects identified by the variable names. Which of the following for loops will not correctly process each element in the array.(假如我们有一个名为names的String对象数组,下面哪个for循环不能遍历数组中的每一个元素?)
A .for(int i = 0; i < names.length; i++)
B .for(String name : names)
C .for(int i = 0; i < names.length(); i++)
D .none of these will correctly process each element(以上都不能遍历)
E .all of these will correctly process each element(以上都能遍历)
结对及互评
评分标准
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
博客中值得学习的或问题:
- xxx
- xxx
- ...
代码中值得学习的或问题:
- xxx
- xxx
- ...
基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
点评过的同学博客和代码
本周结对学习情况
结对学习内容
- 共同学习了有关书上的内容
- 上周考试错题的在分析
- 预习有关内容
上周博客互评情况(只要链接,具体点评放相应博客下)
其他(感悟、思考等,可选)
第二次实验让我对java实验有了更加深入的理解。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 10/10 | 1/1 | 10/10 | |
第二周 | 110/200 | 1/2 | 10/20 | |
第三周 | 150/350 | 1/3 | 10/30 | |
第四周 | 400/750 | 1/4 | 15/45 | |
第五周 | 430/1200 | 1/5 | 20/65 | |
第六周 | 700/2000 | 1/6 | 20/85 | |
第七周 | 700/2700 | 3/9 | 30/115 | |
第八周 | 300/3000 | 1/10 | 40/135 | |
第九周 | 500/3500 | 2/12 | 65/200 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:XX小时
实际学习时间:XX小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
20155324 2016-2017-2 《Java程序设计》第9周学习总结的更多相关文章
- # 20155337 2016-2017-2 《Java程序设计》第九周学习总结
20155337 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- 【算法】php计算出丑数
丑数描述 把只包含因子2,3,5的正整数被称作丑数,比如4,10,12都是丑数,而7,23,111则不是丑数. 判断方法 首先除2,直到不能整除为止,然后除5到不能整除为止,然后除3直到不能整除 ...
- 课后选做题:MyCP
目录 CP命令了解 MyCP实现 CP命令了解 作用:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...
- 20165223《JAVA程序设计》第二周学习总结
20165223 <JAVA程序设计>第二周学习总结 教材学习内容总结 第二章要点 标识符与关键字 基本数据类型 类型转换运算 输入输出数据 数组 第三章要点 运算符与表达式 语句概述 i ...
- hdu3038How Many Answers Are Wrong(带权并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038 题解转载自:https://www.cnblogs.com/liyinggang/p/53270 ...
- QML学习笔记(二)-纯qml画图实现canvas画板-鼠标画图
作者: 狐狸家的鱼 Github: 八至 版权声明:如需转载请获取授权和联系作者 用纯qml实现canvas画板功能,用鼠标进行画图,可以画直线,画圆,画矩形,画弧线. 由于canvas画图会有延迟和 ...
- vue层级关系的数据管理
项目背景:为一些有层级关系的数据管理做一套后台管理系统,例如一个小区,里面是有许多楼,楼里有许多层,每一层有许多不同的房······,现在就是要实现对这些数据进行增删改查操作. 1.Tree(树形组件 ...
- Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(2)
1.restful api介绍 1.前后端分离的优缺点 1.为什么要用前后端分离 1.pc.app.pad多端适应 2.SPA(单页面应用)开发模式开始流行 3.前后端分离职责不清 4.开发效率问题, ...
- bs4抓取糗事百科
抓取糗事百科内容及评论,不包含图片信息.user-agent填入浏览器的即可.user-agent对应的value,360极速浏览器的话,可以在地址栏输入about:version,回车,用户代理后面 ...
- JavaScript之美读书笔记一
前两天去图书馆借了一本<JavaScript之美>,在书架上无意中看到的,想着那就看看吧. 第一章 原型 有些JavaScript爱好者宣称JavaScript是一种基于原型而不是面向对象 ...
- 关于苹果手机微信端 position: fixed定位top导航栏问题
在移动端,position: fixed定位一般不被识别,或者在ios系统中,获取input焦点时,会导致position: fixed的top失效,下面是我验证过的方法,大家可以试试.<!do ...