20165228 2017-2018-2 《Java程序设计》第7周学习总结
20165228 2017-2018-2 《Java程序设计》第7周学习总结
教材学习内容总结
- MySQL数据库管理系统安装和初始化
- 使用MySQL建立连接和数据库、表
- 使用JDBC:(1)与一个数据库建立连接。
(2)向数据库发送SQL语句。
(3)处理数据库返回的结果。 - 应用程序负责加载的JDBC-MySQL数据库驱动,代码如下:
try{ Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){}
- 应用程序要和MySQL数据库服务器管理的数据库students(在11.3节建立的数据库)建立连接
- 使用Connection getConnection(java.lang.String) 方法建立连接的代码如下:
Connection con;
String uri =
"jdbc:mysql://192.168.100.1:3306/students?user=root&password=&useSSL=true";
try{
con = DriverManager.getConnection(uri); //连接代码
}
catch(SQLException e){
System.out.println(e);
}
- 使用Connection getConnection(java.lang.String, java.lang.String, java.lang.String)方法建立连接的代码如下:
Connection con;
String uri = "jdbc:mysql:// 192.168.100.1:3306/students? useSSL=true";
String user ="root";
String password ="";
try{
con = DriverManager.getConnection(uri,user,password); //连接代码
}
catch(SQLException e){
System.out.println(e);
}
- 如果数据库的表中的记录有汉字,那么在建立连接时需要额外多传递一个参数characterEncoding,并取值gb2312或utf-8
String uri =
"jdbc:mysql://localhost/students?useSSL=true&characterEncoding=utf-8";
con = DriverManager.getConnection(uri, "root",""); //连接代码
- 查询操作:
1、得到SQL查询语句对象
try{ Statement sql=con.createStatement();
}
catch(SQLException e ){}
2、这个对象就可以调用相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象
ResultSet rs = sql.executeQuery("SELECT * FROM students");
也就是说SQL查询语句对数据库的查询操作将返回一个ResultSet对象,ResultSet对象是按“列”(字段)组织的数据行构成。
- 关闭连接:
ResultSet对象和数据库连接对象(Connection对象)实现了紧密的绑定,一旦连接对象被关闭,ResultSet对象中的数据立刻消失。这就意味着,应用程序在使用ResultSet对象中的数据时,就必须始终保持和数据库的连接,直到应用程序将ResultSet对象中的数据查看完毕
con.close();
此后,程序将无法获取ResultSet对象中的数据
- 顺序查询:
指ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行的前面。next()方法向下(向后、数据行号大的方向)移动游标,移动成功返回true,否则返回false - 使用下述方法获得一个Statement对象,从而得到一个可滚动的结果集
Statement stmt = con.createStatement(int type ,int concurrency);
- 条件和排序查询:
1. where子语句
一般格式:
select 字段 from 表名 where 条件
2. 排序
用order by子语句对记录排序
select * from mess where name like '%林%' order by name
- 更新操作
update 表 set 字段 = 新值 where <条件子句>
- 添加操作
insert into 表(字段列表) values (对应的具体的记录)
或
insert into 表 values (对应的具体的记录)
- 删除操作
delete from 表名 where <条件子句>
- 使用预处理语句和通配符
- 通用查询:
编写一个类,只要用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录。 - 事务:
事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行 - JDBC事务处理步骤:
1.用setAutoCommit(booean b)方法关闭自动提交模式
2.用commit()方法处理事务
3.用rollback()方法处理事务失败
教材学习中的问题和解决过程
- 问题1:教材中提到“JDBC操作不同的数据库仅仅是连接方式上的差异而已”,连接方式有什么差异呢?
- 问题1解决方案:参考JDBC各种数据库连接方式
代码调试中的问题和解决过程
问题1:在按照配套PPT使用windows安装MySqlt初始data时出错
问题1解决方案:进入C:/windows/system32 ,找到cmd,通过管理员身份运行cmd,在mysql目录的bin子目录下输入mysqld --initialize-insecure可以初始化成功
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1:
下列关于HashMap泛型类常用方法的介绍,正确的是 ACD
A.public boolean isEmpty()如果此映射不包含键-值映射关系,则返回 true。
B.public V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则抛出异常。
C.public V put(K key, V value) 在此映射中关联指定值与指定键。如果该映射以前包含了一个该键的映射关系,则以先定义的值为准。
D.public Object clone()返回此 HashMap 实例的浅表副本:并不复制键和值本身。 - 解析:查询API。B项:如果此映射不包含该键的映射关系,则返回null。C项:如果该映射以前包含了一个该键的映射关系,则旧值被替换。
- 错题2:
下列关于TreeSet泛型类常用方法的介绍,正确的是 BCD
A.public boolean contains(Object o) 如果此 set 包含指定的元素,则返回 true。如果指定对象无法与该 set 中的当前元素进行比较,或不包含,则返回false。
B.public boolean add(E e)将指定的元素添加到此 set。如果此 set 已经包含这样的元素,则该调用不改变此 set 并返回 false。
C.public boolean addAll(Collection<? extends E> c)将指定 collection 中的所有元素添加到此 set 中。如果此 set 由于调用而发生更改,则返回 true。
D.public E lower(E e) 返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。 - 解析:A项:如果指定对象无法与该 set 中的当前元素进行比较,则抛出ClassCastException异常。查询API。B项:如果此映射不包含该键的映射关系,则返回null。C项:如果该映射以前包含了一个该键的映射关系,则旧值被替换。
- 错题3:
String类中的length()方法用来获取一个String对象的字符序列的长度,单位为字节。 B
A.true
B.false - 解析:长度等于字符串中 Unicode 代码单元的数量。
- 错题4:
public boolean startsWith(String prefix)方法,如果参数是空字符串,则抛出异常。 B
A.true
B.false - 解析:返回的结果是true
- 错题5:
下列关于public int compareTo(String anotherString)的说法,正确的是 ACDE
A.按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode值。
B.如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个正整数。
C.如果它们在一个或多个索引位置上的字符不同,假设 k 是这类索引的最小值,compareTo 返回这两个字符串在位置 k 处两个char 值的差,即值:this.charAt(k)-anotherString.charAt(k)
D.如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差
E.compareTo 只在方法 equals(Object) 返回 true 时才返回 0。 - 解析:查询API。B项:返回一个负整数。
- 错题6:
下列关于substring方法的说法,正确的是 ACD
A.public String substring(int beginIndex)返回的子字符串从指定索引处的字符开始,直到此字符串末尾。
B.public String substring(int beginIndex, int endIndex) 子字符串从指定的 beginIndex 处开始,直到索引 endIndex处的字符。
C."emptiness".substring(9)返回值为""。
D."smiles".substring(1, 5)返回值为"mile"。
E.若beginIndex 大于 endIndex,则substring(int beginIndex, int endIndex)返回-1。 - 解析:查询API。B项:直到索引 endIndex - 1 处的字符。E项:抛出IndexOutOfBoundsException异常
- 错题7:
下列说法错误的是 D
A.java.util包中的Data类重写了toString()方法。
B.Arrays和Point都继承了toString方法。
C.调用x.toString()方法的地方可以用""+x代替。
D.定义int[] Numbers = {1, 2, 3}; String s1 = ""+Numbers;,则System.out.println(s1);调用了toString方法,可以将数组输出。 - 解析:D项:若想打印数组,数组必须调用静态方法Arrays.toString,也就是将以上程序中的String s1 = ""+Numbers;改为String s1 = Arrays.toString(Numbers);。如果要打印多维数组,则需要调用Arrays.deepToString方法。
- 错题8:
下列关于字符串与字符数组、字节数组的说法,正确的是 ACD
A.getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin)方法的返回值为空。
B.srcEnd是字符串中要复制的最后一个字符的索引。
C.srcBegin 大于 srcEnd时,会抛出IndexOutOfBoundsException异常。
D.要复制到 dst 子数组的字符从索引 dstBegin 处开始,并结束于索引dstbegin + (srcEnd-srcBegin) - 1 - 解析:查询API。B项:srcEnd是字符串中要复制的最后一个字符之后的索引。
- 错题9:
下列关于正则表达式的说法,正确的是 ABDE
A.\ba\w*\b匹配以字母a开头的单词
B.\d+匹配1个或更多连续的数字。
C.\b\w{6}\b 匹配6个及以上字符的单词。
D.[0-9]代表的含意与\d就是完全一致的:一位数字
E.\S+匹配不包含空白符的字符串。
F.(\d{1,3}.){3}\d{1,3}用来匹配 IP地址。 - 解析:C项:\b\w{6}\b 匹配刚好6个字符的单词。F项: IP地址中每个数字都不能大于255,该表达式忽略了这个约束条件。正确的是((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。
结对及互评
- 博客中值得学习的或问题:
要素全面
很认真细致
排版简介美观 - 代码中值得学习的或问题:
代码中文件分类简洁
很认真
其他(感悟、思考等,可选)
本周学习了如何安装和使用MySQL数据库管理系统,建立连接,关闭链接,以及查询、添加、删除等各种操作
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 25篇 | 400小时 | |
第一周 | 235/235 | 1/1 | 15/15 | |
第二周 | 224/459 | 2/3 | 15/30 | |
第三周 | 443/902 | 1/4 | 15/73 | |
第四周 | 577/1479 | 2/6 | 17/90 | |
第五周 | 1222/2360 | 1/7 | 14/104 | |
第六周 | 1527/3294 | 1/8 | 14/118 | |
第七周 | 591/3883 | 1/9 | 14/132 |
- 计划学习时间:15小时
- 实际学习时间:14小时
20165228 2017-2018-2 《Java程序设计》第7周学习总结的更多相关文章
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 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入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- Windows服务手动关闭教程
Windows上关闭软件自启动,经常使用360等软件的开机加速功能去优化. 但有时候有些服务开机是启动的但在360中并没有找到那如何手动关闭这些服务的自启动呢? 下边以Autodesk Applica ...
- Node.js是用来干嘛的
如果你去年注意过技术方面的新闻,我敢说你至少看到node.js不下一两次.那么问题来了“node.js是什么?”.有些人没准会告诉你“这是一种通过JavaScript语言开发web服务端的东西”.如果 ...
- 【性能测试工具ab】ab工具使用
1.在安装了apache服务器后,或者wampserver后,在bin目录下,有一个ab.exe文件 2.使用,进入ab.exe所在的文件夹 3.ab -c 10 -n 1000 htt ...
- Win10系列:VC++ Direct3D图形绘制1
通过前面的介绍,相信读者已经了解了如何新建一个用于开发Direct3D应用程序的项目模版,以及这个项目模版中用于绘制立体图形的主要函数.在本小节中,将通过一个具体的示例来介绍如何使用Visual St ...
- C++ 解析一
C++ 类和对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计.类是 C++ 的核心特性,通常被称为用户定义的类型.类用于指定对象的形式,它包含了数据表示法和用于处理数据 ...
- java中super关键字的用法
class Sum { int n; float f() { float sum=0; for(int i=1;i<=n;i++) sum=sum+i; System.out.println(& ...
- .net core Asp.net Mvc Ef 网站搭建 vs2017 1)
1)开发环境搭建 首先下载安装vs2017 地址 :https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net ...
- poj3261
题解: 同bzoj1717 代码: #include<bits/stdc++.h> using namespace std; ,P2=,P=; int a1[P],num[P],a2[P] ...
- day8-python函数
函数的简介 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字. 降低编程难度 代码重用 可以通过函数名在程序的不同地方多长执行,这通常叫函数调用(.). 预定义函数 ...
- bluemix部署(二)构建kubernetes工作环境
本文接上篇.在bluemix中构建kubernetes容器. 1.创建集群 左上角的三横,选容器,然后创建集群. 注意区域,免费版,给个名字,创建集群吧. 继续正在部署,这个可能要15-30分钟,真不 ...