20165214 第七周学习任务

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语句的基础上进行关键字按条件排序,然后获取信息。
  • 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个...。
  • 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语句,以此来达到事务处理的效果。
  • 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,那么只能连接已有的数据库而不能创建。

教材学习中的问题和解决过程

  • 问题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小时

posted @ 2018-04-15 19:18  刘璐瑾  阅读(200)  评论(2编辑  收藏  举报