zoukankan      html  css  js  c++  java
  • 2045331 《Java程序设计》第09周学习总结

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

    教材学习内容总结

    第十六章 整合数据库

    16.1.1JDBC简介

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

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

    ·Type 1:JDBC-ODBC Bridge Driver
    ·Type 2:Native API Driver
    ·Type 3:JDbc-Net Driver
    ·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()方法来动态调用指定的方法。

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

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

    package cc.openhome;
    
    import static java.lang.System.out;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLClassLoader;
    
    public class ClassLoaderDemo {
        public static void main(String[] args) {
            try {
                String path = args[0];    // 測試路徑
                String clzName = args[1]; // 測試類別
                Class clz1 = loadClassFrom(path, clzName);
                out.println(clz1);
                Class clz2 = loadClassFrom(path, clzName);
                out.println(clz2);
                out.printf("clz1 與 clz2 為%s實例",
                    clz1 == clz2 ? "相同" : "不同");
            } catch (ArrayIndexOutOfBoundsException e) {
                out.println("沒有指定類別載入路徑與名稱");
            } catch (MalformedURLException e) {
                out.println("載入路徑錯誤");
            } catch (ClassNotFoundException e) {
                out.println("找不到指定的類別");
            }
        }
    
        private static Class loadClassFrom(String path, String clzName)
            throws ClassNotFoundException, MalformedURLException {
        ClassLoader loader = new URLClassLoader(new URL[] {new URL(path)});
        return loader.loadClass(clzName);
        }
    }

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

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

    学习进度条

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

    参考资料

  • 相关阅读:
    十、 Spring Boot Shiro 权限管理
    十六、Spring Boot 部署与服务配置
    十五、Spring Boot 环境变量读取 和 属性对象的绑定
    三、spring cloud 服务提供与调用
    CSS 表格实例
    CSS 列表实例
    CSS 内边距 (padding) 实例
    CSS 外边距
    CSS 边框(border)实例
    CSS 字体(font)实例
  • 原文地址:https://www.cnblogs.com/bosswsc/p/5451117.html
Copyright © 2011-2022 走看看