20145223《Java程序程序设计》第9周学习总结
20145223《Java程序设计》第9周学习总结
教材学习内容总结
第十六章:整合数据库
JDBC入门
1、JDBC简介:

2.JDBC主要分成两个部分,JDBC应用程序开发者接口和JDBC驱动程序开发者接口
3.应用程序使用JDBC联机数据库的通用语法:
Connection conn = DriverManager.getConnection(……);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM T_USER");
取得Connection:
try {
String url = "jdbc:mysql://localhost:3306/demo?" +"user=root&password=123";
Connection conn = DriverManager.getConnection(url);
...
}
catch(SQLException e) {
....
}
String url = "jdbc:mysql://localhost:3306/demo";
String user = "root";
String password = "123";
Connection conn = DriverManager.getConnection(url,user, password);
4.JDBC数据库驱动程序依实作方式可以分为四个类型
Type 1:JDBC-ODBC Bridge

Type 2:Native-API Bridge

Type 3:JDBC-middleware

Type 4:Pure Java Driver

5.取得Connection的方式,依所使用的环境及程序需求而有所不同
设计一个DBSource界面
package onlyfun.caterpillar;
import java.sql.Connection;
import java.sql.SQLException;
public interface DBSource {
public Connection getConnection() throws SQLException;
public void closeConnection(Connection conn) throws SQLException;
}
public class SimpleDBSourceimplementsDBSource {
…
public SimpleDBSource(String configFile) throws IOException,
ClassNotFoundException {
props = new Properties();
props.load(new FileInputStream(configFile));
url = props.getProperty("onlyfun.caterpillar.url");
user = props.getProperty("onlyfun.caterpillar.user");
passwd = props.getProperty("onlyfun.caterpillar.password");
Class.forName(
props.getProperty("onlyfun.caterpillar.driver"));
}
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, passwd);
}
public void closeConnection(Connection conn) throws SQLException {
c onn.close();
}
}
onlyfun.caterpillar.driver=com.mysql.jdbc.Driver
onlyfun.caterpillar.url=jdbc:mysql://localhost:3306/demo
onlyfun.caterpillar.user=root
onlyfun.caterpillar.password=123456
DBSource dbsource = new SimpleDBSource();
Connection conn = dbsource.getConnection();
if(!conn.isClosed()) {
System.out.println("数据库连接已开启…");
}
dbsource.closeConnection(conn);
if(conn.isClosed()) {
System.out.println("数据库连接已关闭…");
}
6.Statement、ResultSet(1)
要执行SQL的话,必须取得java.sql.Statement物件,它是Java当中一个SQL叙述的具体代表对象
Statement stmt = conn.createStatement();
插入一笔数据,可以如下使用Statement的executeUpdate()方法
stmt.executeUpdate("INSERT INTO t_message VALUES(1, 'justin', " +
"'justin@mail.com', 'mesage...')");
7.Statement、ResultSet(2)
·executeUpdate()会传回int结果,表示资料变动的笔数
·executeQuery()方法则是用于SELECT等查询数据库的SQL
·executeQuery()会传回java.sql.ResultSet对象,代表查询的结果
·可以使用ResultSet的next()来移动至下一笔数据,它会传回true或false表示是否有下一笔资料
·使用getXXX()来取得资料
8.Statement、ResultSet(3)
·Statement的execute()可以用来执行SQL,并可以测试所执行的SQL是执行查询或是更新
·传回true的话表示SQL执行将传回ResultSet表示查询结果,此时可以使用getResultSet()取得ResultSet物件
·如果execute()传回false,表示SQL执行会传回更新笔数或没有结果,此时可以使用getUpdateCount()取得更新笔数
·如果事先无法得知是进行查询或是更新,就可以使用execute()
9.preparedStatement()
·preparedStatement()方法建立好一个预先编译(precompile)的SQL语句
·当中参数会变动的部份,先指定"?"这个占位字符
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO t_message VALUES(?, ?, ?, ?)");
需要真正指定参数执行时,再使用相对应的setInt()、setString()等方法,指定"?"处真正应该有的参数
stmt.setInt(1, 2);
stmt.setString(2, "momor");
stmt.setString(3, "momor@mail.com");
stmt.setString(4, "message2...");
10.ResultSet还提供了对结果集进行滚动的方法:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
反射与类加载器
1.java.lang.Class的实例代表Java应用程序运行时加载的.class文档,类、接口、Enum等编译过后,都会生成.class文档。Class类没有公开构造函数,实例时候JVM自动产生,每个.class文档加载时,JVM会自动生成对应的Class对象。
2.取得Class对象的方式:
(1)通过Object的getClass方法
(2)通过.class常量取得每个对象对应的Class对象
(3)如果是基本类型,可以使用对应的打包类加上.TYPE取得Class对象
3.类信息是在编译时期存储在.class文档,这是java支持执行运行时类型识别的方式。编译时期若使用到相关类,编译程序会检查对应的.class文档中记载的信息,以确定是否可完成编译。执行时期使用某类是,会先检查是否有对应的Class对象,如果没有,会加载对应的.class文档并生成对应的Class实例。
4.默认使用getClass()或.class取得的Class实例会是同一个对象。
5.类连接:指的是把类的二进制数据合并到JRE中,这又分为3个阶段:
·校验:检查载入Class文件数据的正确性。
·准备:给类的静态变量分配存储空间,并进行默认初始化。
·解析:将类的二进制数据中的符号引用替换成直接引用。
6.JVM运行时会产生3个ClassLoader,分别为:BootstrapClassLoader(根类加载器)、ExtClassLoader(扩展类加载器)和AppClassLoader(系统类加载器)。
7.类加载器之间的父子关系和管辖范围:

第十八章 自定义泛型、枚举与注释
·泛型使得编译器能够在编译期间对集合中加入的对象进行检查,如果加入了不同类型的对象,就会报错,而不必等到运行期间再进行相关的类型转换。和原来没有使用泛型相比,它将原来需要在运行时期才能发现的异常提前到了编译期间,使得程序的安全性也大大提高,泛型一般用于集合类中。
·泛型也可以仅定义在方法上,可在方法返回类型前使用定义泛型,之后就可以使用T来定义返回类型、参数类型,或在方法内声明变量、转换类型等,在定义泛型时,使用extends限制指定T实际类型时,必须是某类的子类。
·枚举:枚举也是JDK1.5之后的版本以后Java新加入的特性。使用枚举可以表示一组常量数据。枚举的本质是一个类,可以使用enum关键字来声明一个枚举类型。
·使用枚举需要注意的是:
1、枚举类型可以定义在类的内部也可以定义在类的外部。如果定义在类的内部,那么其访问控制符可以是public,protected,private或者默认的控制符。如果定义在类的外部,其访·问控制符只能是public和默认控制符;
2、枚举类型中定义的value值都默认为public static final的。其值一经定义就不能在被修改了。多个value值之间需要用逗号隔开;
3、枚举类型中除了可以声明常量之外还可以声明方法。但是方法需要在常量之后,并且常量和方法之间要用分号区分;
4、枚举类型中的值可以通过枚举类型名直接对他们进行访问;
5、枚举类型不能声明为abstract或者final类型;
·枚举类型的常用方法
public final String name()//返回枚举常量的名称;
public final int ordinal()//返回枚举常量在枚举类型中的位置,第一个枚举值序号为0,依次类推;
public String toString()//返回枚举常量的名字,可以重写此方法;
public static valueOf(enumType,String name)//返回与name名字相对应的枚举常量;
·JDK8标注增强功能
1.ElementType的枚举成员是用来限定哪个声明位置可以进行标注。在JDK8中,增加了两个枚举成员TYPE _PARAMETER、TYPE _USE。
2.ElementType.TYPE _ USE可用于标注在各式类型,一个标注如果被设定为ElementType.TYPE_USE,只要是类型名称,都可以进行标注。
3.@Repeatable 可以让你在同一个位置重复相同标注
4.@Filters 作为收集重复标注信息的容器,而每个@Filters储存各自指定的字符串值。
·
学习总结
不知不觉java的学习已经到了第九周,书上的内容基本上已经自学完了,但是我觉得后期的学期与实际操作并没有很好结合在一起。在接下来的学习中,希望可以在老师布置的项目课程里好好地利用这些知识并且能够更加熟练地运用java这一门技能。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 4000行 | 20篇 | 400小时 | |
| 第一周 | 200/200 | 1/1 | 15/12 | |
| 第二周 | 180/380 | 1/1 | 18/12 | |
| 第三周 | 600/980 | 1/1 | 17/16 | |
| 第四周 | 400/380 | 1/1 | 16/15 | |
| 第五周 | 300/680 | 1/1 | 14/14 | |
| 第六周 | 200/200 | 2/2 | 10/10 | |
| 第七周 | 100/100 | 2/2 | 10/10 | |
| 第八周 | 50/50 | 1/2 | 5/5 | |
| 第九周 | 70/70 | 1/1 | 8/8 |
代码托管截图

参考资料
20145223《Java程序程序设计》第9周学习总结的更多相关文章
- 201521145048《Java程序设计管理》第一周学习总结
1. 本周学习总结 学习并了解Java的发展与历史 在网上视频中学习Java 了解并区分JVM JRE JDK 将java与已学语言做比较,发现相同处 2. 书面作业 Q1.为什么java程序可以跨平 ...
- 20145223《Java程序程序设计》课程总结
20145223<Java程序程序设计>课程总结 每周读书笔记链接汇总 第一周学习总结 第二周学习总结 第三周学习总结 第四周学习总结 第五周学习总结 第六周学习总结 第七周学习总结 第八 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与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入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- (2016弱校联盟十一专场10.5) F. Fibonacci of Fibonacci
题目链接 题目大意就是这个,先找出下标的循环节,再快速幂对20160519取余就行了. 找出下标循环节: #include <cstdio> #include <iostream&g ...
- 25个增强iOS应用程序性能的提示和技巧(高级篇)(1)
25个增强iOS应用程序性能的提示和技巧(高级篇)(1) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...
- July 6th, Week 28th Wednesday, 2016
Diligence is the mother of good fortune. 勤勉是好运之母. The mother of good fortune can be diligence, conti ...
- 解决java.lang.SecurityException: Access to default session denied
原先使用的代码如下: Session session = Session.getDefaultInstance(properties, null); 后来把代码修改为: Session session ...
- 模拟赛1103d1
取模(mod) [题目描述] 有一个整数a和n个整数b_1, -, b_n.在这些数中选出若干个数并重新排列,得到c_1,-, c_r.我们想保证a mod c_1 mod c_2 mod - mod ...
- 用java来删除数组中指定的元素
public static void main(String[] args){ String[] a = new String[]{"1","5" ...
- AlwaysOn的认识与相关理解
AlwaysOn技术的简要说明: SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日 ...
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- 回溯法解决N皇后问题(以四皇后为例)
以4皇后为例,其他的N皇后问题以此类推.所谓4皇后问题就是求解如何在4×4的棋盘上无冲突的摆放4个皇后棋子.在国际象棋中,皇后的移动方式为横竖交叉的,因此在任意一个皇后所在位置的水平.竖直.以及45度 ...
- 用with实现python的threading,新鲜啊
哈哈,2.5以后可用.自动加锁释放,如同操作文件打开关闭一样. #!/usr/bin/env python # -*- coding: utf-8 -*- import threading impor ...