20165214 2017-2018-2 《Java程序设计》第七周学习总结
教材学习内容总结
-
11.1 介绍了如何下载mysql社区版,我跟着流程下载成功了。
-
11.2 介绍了如何启动MySQL数据库服务器;可以使用
mysqadmin -r [用户名] -p [密码]
来修改密码。初始化成功后出现了data目录:
-
11.3 MySQL客户端管理工具(如Navicat)可以在与数据库服务器建立连接之后,进行建立数据库及相关操作。进行操作后如下结果:
-
11.4 Java有专门操作数据库的API:JDBC。使用JDBC的步骤:①与一个数据库建立连接;②向已连接的数据库发送SQL语句;③处理SQL语句返回的结果。
-
11.5 应用程序在和MySQL数据库服务器上的数据库建立连接后,能够和数据库交互信息。
- 在将数据库驱动放到JDK的扩展目录后,加载数据库驱动
try{ Class.forName("com.mysql.jdbc.Driver");
{
catch(Exception e){}
- 连接数据库使用java.sql包中的DriverManager类中的类方法Connection getConnection来建立连接
- 11.6 查询操作。查询操作分三个步骤:①向数据发送SQL查询语句;②处理查询结果;③关闭连接(关闭后程序无法在数据库中获得数据)
- 结果集的游标的初始位置在结果集第一行的前面,可以使用next()方法进行移动。也可以利用
Statement stmt=con.creatStatement(int type,int concurrency)
来获得一个Statement对象后,根据type类型可以使得游标以不同方式进行移动。 - 条件与排序查询:①where语句的格式
where 字段 from 表格 where 条件
,使用该语句可以在表格中获取关键字且关键字满足条件的信息。其中可以用操作符进行匹配,使用%代替0个或者多个字符,用一个下划线_代替一个字符。②order by语句的格式select * from mess where name like * order by name
可以在where语句的基础上进行关键字按条件排序,然后获取信息。
- 结果集的游标的初始位置在结果集第一行的前面,可以使用next()方法进行移动。也可以利用
- 11.7 更新、添加与删除操作。首先要创建Statement对象,然后用该对象调用方法
public int executeUpadte(String sqlStatement)
来进行操作。- ①更新:
update 表 set 字段 = 新值 where <条件子句>
- ②添加:
insert into 表 values (对应的具体记录)
- ③删除:
delete from 表 where <条件字句>
- ①更新:
- 11.8 使用预处理语句(PrepareStatement)
- 预处理语句可以对指定的SQL语句进行预编译处理,提高程序执行效率。PrepareStatement对象可以调用这三个方法来使得底层内部命令被数据库执行:
- ①
ResultSet executeQuery()
- ②
boolean execute()
- ③
int executeUpdate()
- ①
- 通配符的使用:在对SQL进行预处理时可以使用通配符?(注意,这里必须为英文输入法)代替字段的值,但是要预先调用相应的方法设置通配符?代表的具体值,如:
sql.setFloat(1,1.76f);
和sql.setString(2,"你好");
。通配符按照它们在预处理SQL语句中从左到右出现的顺序分别被称为第1个,第2个...。
- 预处理语句可以对指定的SQL语句进行预编译处理,提高程序执行效率。PrepareStatement对象可以调用这三个方法来使得底层内部命令被数据库执行:
- 11.9 通用查询。ResultSet对象调用调用getMetaData()方法返回一个ResultSetMetaData对象,然后这个对象就可以调用getColumeCount()方法来返回结果集中列的数目;也可以调用getColumnName(int i)方法可以返回结果集中第i列的名字。
- 11.10 事务
- 事务及处理。事务由一组SQL语句组成;事务处理是指应用程序保证事务中的SQL语句的执行与否是同步的,这可以保证数据库中数据的完整性与一致性。
- JDBC事务处理步骤
- ①和数据库的连接对象(例如con)的提交模式是自动提交模式,即它产生的Statement对象对数据库提交的SQL语句都会立刻升序,因此为了事务处理,con可以调用
setAutoCommit(false)
方法来关闭自动提交方式,接着再像之前那样获取Statement对象sql。 - ②con可以调用
commit()
方法让SQL语句全部生效。 - ③当con调用
commit()
方法进行事务处理时,只要其中一个SQL语句未能生效,就抛出SQLException异常,处理异常时要调用rollBack()方法,来撤销已经成功执行的SQL语句,以此来达到事务处理的效果。
- ①和数据库的连接对象(例如con)的提交模式是自动提交模式,即它产生的Statement对象对数据库提交的SQL语句都会立刻升序,因此为了事务处理,con可以调用
- 11.11 介绍了SQL Server数据库的下载与连接建立。
- 11.12 Derby数据库是Java平台提供的一个数据库管理系统,虽然它占空间小,但是支持几乎大部分的数据库应用所需要的特性。应用程序连接Derby数据库需要两个步骤
- ①加载Derby数据库驱动程序:
Class.forName("org.apache.jdbc.EmbeddedDriver");
- ②创建并连接数据库或连接已有的数据库:
Connection con=DriverManager.getConnection("jdbc:derdy:students;create=true");
这里create取true,若没有该数据库,则创建。如果将create取false,那么只能连接已有的数据库而不能创建。
- ①加载Derby数据库驱动程序:
教材学习中的问题和解决过程
-
问题1:除了下载MySQL以外,我还下载了XAMMP。但是,在启动Apache和MySQL的时候,出现了如下错误:
-
问题1解决方案:原因是Apache的启动需要443端口,而443端口被我电脑里面的VMvare给占用了。于是我打开VMvare的端口设置,把端口值改成了449,问题就解决了。参考博客。
代码调试中的问题和解决过程
-
问题1:在运行第一个程序的时候出现了这样的问题
-
问题1解决方案:现在还没有解决。
代码托管
上周考试错题总结
第五周:
-
错题1:内部类是可以被private修饰的。
-
错题2:对于严重的错误才用Error类来描述,这里是不严重的问题,应该通过Exception类来描述。
-
错题3:要注意审题。
-
错题4:要学会查找API(现在已经学会查询API了)。
-
错题5:B选项应当是抽象路径名的路径名字符串。
-
错题6:?指得是出现1次或者0次。这里?修饰的是c而不是abc三个字母。
-
错题7:
第六周:
-
错题1:第⑤项应该是TreeMap
泛型类创建树映射。
-
错题2:A选项是错的。因为如果指定对象无法与该 set 中的当前元素进行比较,则抛出ClassCastException异常。
-
错题3:/d+匹配0~9中的数字出现一次或者一次以上。
-
错题4:查阅了API,D是正确的。
-
错题5:B选项的右边发生错误,超出short类型范围。
-
错题6:命令行输入的得一个元素存储在args[0],因此args[3]=3。
结对及互评
其他
本周学习了数据库,不过感觉学得很不顺畅。。倒也不是说代码的问题,代码是能够看得懂得,但是在建立数据库的连接、进行程序运行的时候,经常出现这个问题:
也一直没找到解决的方案。这周的时间比较赶,于是我就先把书上的教程都不落下地阅读并且操作了一回,打算在下周解决完这个问题后,再回来尝试着运行这些有问题的程序。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 36/36 | 1/1 | 8/8 |
第二周 | 432/468 | 2/3 | 15/23 |
第三周 | 964/1432 | 1/4 | 16/39 |
第四周 | 725/2157 | 1/5 | 14/53 |
第五周 | 1428/3585 | 3/8 | 18/71 |
第六周 | 1323/4908 | 1/9 | 17/88 |
第七周 | 960/5868 | 3/12 | 22/110 |
-
计划学习时间:20小时
-
实际学习时间:22小时