2045331 《Java程序设计》第09周学习总结

教材学习内容总结

第十六章 整合数据库

16.1.1JDBC简介

1、JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性。

2、厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型:

  1. ·Type 1:JDBC-ODBC Bridge Driver
  2. ·Type 2:Native API Driver
  3. ·Type 3:JDbc-Net Driver
  4. ·Type 4:Native Protocol Driver

3、1、JDBC标准分为两部分:

(1)JDBC应用程序开发者接口(2)JDBC驱动程序开发者接口

16.1.2连接数据库

1、注册Java操作对象: 操作Driver接口的对象是JDBC进行数据库存取的起点。

2、取得Connection操作对象

3、关闭Connection操作对象: 可以自动关闭

16.1.3Statement与ResultSet

1、执行SQL,必须取得java.sql.Statement,使用Connection的createStatement()建立Statement对象

2、取得Statement对象后,使用executeUpdate()(在表中插入一笔数据,返回int结果,表示数据变动的笔数)、executeQuery()(用于SELECT等查询数据库的SQL,返回java.sql.ResultSet对象,代表查询结果,会是一笔一笔的数据)

3、Statement或ResultSet不使用时,使用close()关掉,Statement关闭时,所关联的ResultSet也会自动关闭

16.2.1DateSource联机

1、通过getConnection()方法取得Connection.

16.2.2使用ResultSet卷动、更新数据

1、在ResultSet时,默认可以使用next()移动数据光标至下一笔数据,而后使用getXXX()方法来取得数据

2、在数据光标移动的API上,可以使用absolute()、afterLast()、beforeFirst()、first()、last()进行绝对位置移动,使用relative()、previous()、next()进行相对位置移动,移动成功返回true。

3、可使用isAfterLast()、isBeforeFirst()、isFrist()、isLast()判断当前位置。

16.2.3批次更新

1、可以使用addBatch()方法收集SQL,并使用executeBatch()方法将所收集的SQL传送出去。

2、所有收集的SQl,然后传送给数据库,再通过一次网络传送给数据库,节省了时间。

16.2.5交易

1、交易的四个基本要求是原子性、一致性、隔离行为与持续性,依英文字母首字母简称为ACID。

2、在交易管理时,仅想要撤回某个SQL执行点,则可以设定存储点。

3、幻读:同一交易期间,读取到的数据笔数不一致。

16.2.6metadata

1、取得数据库的整体信息,取得域名字段类型等信息

16.2.7RowSet简介

JDBC的数据列集合(电子表格、XML数据或其他具有列集合概念的数据源),可以使用RowSet对列集合进行增删查改。

第十七章 反射与类加载器

1、Java真正需要某个类时才会加载对应的.class文档,而非在程序启动就加载所有类。java.lang.Class的实例代表Java应用程序运行时加载的.class文档。可以通过Object的getClass()方法,或者通过.class常量取得每个对象对应的Class对象,如果是基本类型,也可以使用对应的打包类加上.TYPE取得Class对象。例如:Integer.TYPE可取得代表int的Class对象。

第十八章 窗口程序设计

1、泛型也可以仅定义在方法上,可在方法返回类型前使用定义泛型,之后就可以使用T来定义返回类型、参数类型,或在方法内声明变量、转换类型等。

2、在定义泛型时,使用extends限制指定T实际类型时,必须是某类的子类。

3、定义enum时有个特定值类本体语法,可用于操作接口或重新定义父类方法。

4、定义enum时可以自行定义构造函数,条件是不得为公开构造函数,也不可以在构造函数中调用super()。

代码调试中的问题和解决过程

1、java.lang.reflect.Method实例是方法的代表对象,可以使用invoke()方法来动态调用指定的方法。

  1. package cc.openhome;
  2. import static java.lang.System.out;
  3. public class ClassInfo {
  4. public static void main(String[] args) {
  5. Class clz = String.class;
  6. out.println("類別名稱:" + clz.getName());
  7. out.println("是否為介面:" + clz.isInterface());
  8. out.println("是否為基本型態:" + clz.isPrimitive());
  9. out.println("是否為陣列物件:" + clz.isArray());
  10. out.println("父類別名稱:" + clz.getSuperclass().getName());
  11. }
  12. }

2、由同一类加载器载入的.class文档,只会有一个Class实例。如果同一.class文档由两个不同的类加载器载入,则会有两份不同的Class实例。

  1. package cc.openhome;
  2. import static java.lang.System.out;
  3. import java.net.MalformedURLException;
  4. import java.net.URL;
  5. import java.net.URLClassLoader;
  6. public class ClassLoaderDemo {
  7. public static void main(String[] args) {
  8. try {
  9. String path = args[0]; // 測試路徑
  10. String clzName = args[1]; // 測試類別
  11. Class clz1 = loadClassFrom(path, clzName);
  12. out.println(clz1);
  13. Class clz2 = loadClassFrom(path, clzName);
  14. out.println(clz2);
  15. out.printf("clz1 與 clz2 為%s實例",
  16. clz1 == clz2 ? "相同" : "不同");
  17. } catch (ArrayIndexOutOfBoundsException e) {
  18. out.println("沒有指定類別載入路徑與名稱");
  19. } catch (MalformedURLException e) {
  20. out.println("載入路徑錯誤");
  21. } catch (ClassNotFoundException e) {
  22. out.println("找不到指定的類別");
  23. }
  24. }
  25. private static Class loadClassFrom(String path, String clzName)
  26. throws ClassNotFoundException, MalformedURLException {
  27. ClassLoader loader = new URLClassLoader(new URL[] {new URL(path)});
  28. return loader.loadClass(clzName);
  29. }
  30. }

其他(感悟、思考等,可选)

java课本终于学完了,不过这只是一个开始,前面有很多学得不扎实的地方,刚好趁这个假期好好通过视频课程补一下。

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第九周 331/331 2/2 20/20

参考资料

2045331 《Java程序设计》第09周学习总结的更多相关文章

  1. 20155334 2016-2017-2 《Java程序设计》第二周学习总结

    20155334 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 java中的基本类型 整数:有short.int.long三种 字节:byte 字符:cha ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. 深入理解ByteBuffer

    ByteBuffer类是在Java NIO中常常使用的一个缓冲区类,使用它可以进行高效的IO操作,但是,如果对常用方法的理解有错误,那么就会出现意想不到的bug. ByteBuffer类的常用方法 先 ...

  2. Piwik网站访问统计软件安装

    Piwik是一个PHP和MySQL的开放源代码的Web统计软件. 它给你一些关于你的网站的实用统计报告,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等… Piwik拥有众多不同功能的插件,你 ...

  3. Code Force 21B Intersection

    B. Intersection time limit per test1 second memory limit per test256 megabytes inputstandard input o ...

  4. 小程序 Expecting 'EOF','}',',',']', got INVALID

    修改了app.json中的东西,做了注释操作,报如下错误: 修改了好一阵,一直报错,原来是json文件中无法使用注释惹的祸,具体查看:官方文档

  5. RHEL6.×配置Centos YUM源

    Step1: 清除原有的yum源rpm -aq|grep yum|xargs rpm -e --nodeps Step2:下载新的yum()源进行安装,注意操作系统支持64位还是32位wget htt ...

  6. Redis在实际项目中的一应用场景

    1.在游戏的等级排名,可以将用户信息放入到redis的有序集合中,然后取得相应的排名,不用自己写代码去排序. 2.利用rediss的数据特性的自增,自减属性,可以将项目中的一些列入阅读数,点赞数放入到 ...

  7. SQL Server 排名函数

    个函数进行的解释. 以下是对这4个函数的解释: RANK() 返回结果集的分区内每行的排名.行的排名是相关行之前的排名数加一. 假设两个或多个行与一个排名关联,则每一个关联行将得到同样的排名. 比如, ...

  8. vxworks 的 socket, thread, 信号量模型

    http://www.vxdev.com/docs/vx55man/vxworks/netguide/c-sockets.html http://www.vxdev.com/docs/vx55man/ ...

  9. 主成分分析PCA学习一条龙

    转自:https://yoyoyohamapi.gitbooks.io/mit-ml/content/%E7%89%B9%E5%BE%81%E9%99%8D%E7%BB%B4/articles/PCA ...

  10. mysql忘记密码怎么办?(转)

    linux下mysql忘记密码处理方法: 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码 ...