教材学习内容总结
本周学习内容:第11章 JDBC数据库操作;第十二章 :Java多线程机制
第十一章 JDBC数据库操作
1.MySQL数据库管理系统:简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Community Edition)是最流行的免费下载的开源数据库管理系统。
2.查询操作具体步骤
- 向数据库发送SQL语句。
- 处理查询结果。
- 关闭连接:ResultSet对象和数据库连接对象(Connection对象)实现了紧密的绑定,一旦连接对象被关闭,ResultSet对象中的数据立刻消失。这就意味着,应用程序在使用ResultSet对象中的数据时,就必须始终保持和数据库的连接,直到应用程序将ResultSet对象中的数据查看完毕
3.顺序查询:指ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行的前面。next()方法向下(向后、数据行号大的方向)移动游标,移动成功返回true,否则返回false。
4.控制游标:为了得到一个可滚动的结果集,需使用下述方法获得一个Statement对象。
Statement stmt = con.createStatement(int type ,int concurrency);
5.条件与排序查询
where子语句:select 字段 from 表名 where 条件。
(1)字段值和固定值比较;(2)字段值在某个区间范围;..
排序:用order by子语句对记录排序
6.更新、添加与删除操作
更新:update 表 set 字段 = 新值 where <条件子句>。
添加:insert into 表(字段列表) values (对应的具体的记录) 或 insert into 表 values (对应的具体的记录)。
删除:delete from 表名 where <条件子句>。
7.使用预处理语句
- 优点:如果应用程序能针对连接的数据库,事先就将SQL语句解释为数据库底层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。
- 使用通配符? :在sql对象执行之前,必须调用相应的方法设置通配符?代表的具体值,如:sql.setFloat(1,1.76f); sql.setString(2, "武泽");
- 预处理SQL语句sql中第1个通配符?代表的值是1.76,第2个通配符?代表的值是'武泽'。通配符按着它们在预处理SQL语句中从左到右依次出现的顺序分别被称为第1个、第2个、……、第m个通配符。
8.通用查询:目的是编写一个类,只要用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录。
- 结果集ResultSet对象rs调用getMetaData()方法返回一个ResultSetMetaData对象(结果集的元数据对象)。
- metaData,调用getColumnCount()方法就可以返回结果集rs中的列的数目。
- metaData调用getColumnName(int i)方法就可以返回结果集rs中的第i列的名字。
9. 事 务:由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。
- JDBC事务处理步骤
(1).用setAutoCommit(booean b)方法关闭自动提交模式。
(2).用commit()方法处理事务。
(3).用rollback()方法处理事务失败。
10.设计思路
- 1.数据库设计
- 在清楚了用户的需求之后,就需要进行数据库设计。数据库设计好之后才能进入软件的设计阶段,因此当一个应用问题的需求比较复杂时,数据库的设计(主要是数据库中各个表的设计) 就显得尤为重要
- 2.数据模型
- 程序应当将某些密切相关的数据封装到一个类中,例如,把数据库的表的结构封装到一个类中,即为表建立数据模型。其目的是用面向对象的方法来处理数据
- 3.数据处理者
- 程序应尽可能能将数据的存储与处理分开,即使用不同的类。数据模型仅仅存储数据,数据处理者根据数据模型和需求处理数据,比如当用户需要注册时,数据处理者将数据模型中的数据写入到数据库的表中
- 4.视图
- 程序尽可能提供给用户交互方便的视图,用户可以使用该视图修改模型中的数据。并利用视图提供的交互事件(例如ActionEvent事件),将模型交给数据处理者
11.总结
(1)JDBC技术在数据库开发中占有很重要的地位,JDBC操作不同的数据库仅仅是连接方式上的差异而已,使用JDBC的应用程序一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库。
(2)当查询ResultSet对象中的数据时,不可以关闭和数据库的连接。
(3)使用PreparedStatement对象可以提高操作数据库的效率。
第十二章 :Java多线程机制
- 现代操作系统可以让计算机系统中的多个进程轮流使用CPU资源,甚至可以让多个进程共享操作系统所管理的资源。
- 线程不是进程,是比进程更小的执行单位,且行为与进程很像;没有进程就不会有线程。
- Java语言支持多线程。
- 计算机在任何给定的时刻只能执行所有线程中的一个;Java虚拟机能够快速地把控制从一个线程切换到另一个线程。
- Java总是从主类的main方法开始执行,执行完main方法后JVM会等其他所有线程都结束之后,才结束Java程序。
- 线程有4种状态:新建、运行、中断、死亡。
- 引起线程中断的原因:
(1)JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU使用权处于中断状态。
(2)线程使用CPU资源期间,执行了sleep(int millsecond)方法,是当前线程进入休眠状态。
(3)线程使用CPU资源期间,执行了wait()方法,是当前线程进入等待状态。
(4)线程使用CPU资源期间,执行某个操作进入阻塞状态。
- 程序要在Thread类的子类中重写run()方法来覆盖父类的run()方法,并且规定线程的具体操作;在线程没有结束run()方法之前,不要让线程再调用start()方法。
- JVM的线程调度器会使高优先级的线程能始终运行。但是在实际编程中不提倡使用线程的优先级来保证算法的正确执行。
- 使用Thread类创建线程对象:Thread(Runnable target)。
- 目标对象与线程的关系:完全解耦:目标对象通过获得线程的名字来确定是哪个线程正在占用CPU资源;弱耦合:组合线程,将目标对象作为自己的成员,可以获得线程对象的引用。
- 线程同步:若干个线程都需要使用一个synchronized(同步)修饰的方法,多个线程调用该synchronized方法必须遵守同步机制。
- 协调同步的线程:wait()、notify()、notifyAll()都是类中的final方法,被所有的类继承且不允许重写的方法。
- 不可以在非同步方法中使用wait()、notify()、notifyAll()。
- 线程联合、GUO线程、计时器线程、守护线程。
参考资料
-
Java 2 实用教程(第5版)