韩顺平.2011最新j2ee视频教程.jdbc新闻管理系统开发文档
- 格式:doc
- 大小:127.50 KB
- 文档页数:4
韩顺平笔记第1讲内容介绍.项目演示.原理剖析1. 课程包括:面向对象编程,图形界面,数据库编程,文件流,网络编程,的多线程2. 历史:1990 启动绿色计划 1992 创建语言—>1994 参加硅谷大会演示功能震惊世界 1995 正式发布第一个版本,目前最新的是7.03. 开发工具:记事本,,,,4. 包括:(运行环境)的工具:编译器解释执行器的类库:3600多个,常用的150多个5. 第一个程序:功能:显示―‖:表示类是公共的,一个文件中只有一个类 :表示这个是一个类:类名(公共类的类名,必须和文件名一样){一个主函数,程序的入口 ( []) {执行语句("!"); } }6. 源程序(文件)——>字节码文件(文件)——>由解释执行器()将字节码文件加载到虚拟机()——>字节码文件()就会在虚拟机中执行); } }第2讲变量.数据类型1. 在里面占4个字节,占8个字节2. 基本数据类型:整数:(一个字节:-128127 四个字节:-247483647两个字节:-3276832767 八个字节:)小数(浮点):布尔:字符:(两个字节,可以存放汉字, 1 ='中';)引申到字符串(类)3.在中对进行运算的时候,直接是当做码对应的整数4.数据不能从高精度到低精度的转换<<<<<3.4;是过不去的,在中小数默认是(双精度)的应该写成是3.4f;不过可以强制转换:()1.2; ()1.95. 1 1.2; a先是往高精度转换,然后赋给b,就报错改成1 1.2; 或者 1 1.2f; 就解决了第4讲流程控制1. 语句中,条件表达式的数据类型应该和后面的类型一致2. 语句中,可用的数据类型主要是:第5讲类与对象1. 面向对象编程-类与对象类名首字母大写类里面的元素叫类的成员变量/属性2. 类的定义包名;类名父类接口名{成员变量;构造方法;成员方法;}3. 如何创建对象:先声明再创建1;1 ();一步到位 1 ();4. 引用传递类似于指针一样第8讲类变量1. 属于类的对象的而不是属于类的2. 5不能在类的外部使用,只能在类定义时候使用!3. 可以用类名直接访问静态变量第9讲类方法封装1.类变量是该类的所有对象共享的对象,一改全改了2.定义语法:访问修饰符数据类型变量名3. 9{1;{("");;}会自动执行一次,也只有一次9(){("");;}( []){9 t1 9();(9);9 t2 9();(i);}}4.类方法(静态方法、静态函数):属于所有对象实例的5中:类变量()原则上用类方法()去访问;类方法中不能访问非静态变量,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)使用:类名.类方法名对象名.类方法名6.非类变量就是实例变量,属于每个对象自己的7面向对象编程的三(四)大特征:封装、继承、多态(、抽象)8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
顺平j2ee系列教程--玩转oracle10g学习笔记引言:数据保存问题?可使用文件保存和数据库保存。
使用文件保存数据存在几个缺点:1、文本的安全性问题;2、文件不利于查询和对数据的管理;3、文件不利于存放海量数据;4、文件在程序中控制不方便。
为解决数据保存问题,专家们设计出更加利于管理数据的东东--数据库(本质就是一个软件),它能更有效的管理数据。
数据库是衡量一个程序员水平的重要指标。
数据库1、数据库的本质就是一款软件,这个软件专门用于管理和维护数据;2、数据存放在数据库中。
数据库服务器、数据库和表的关系所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每个应用创建一个数据库。
为了保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如图所示:为什么选择oracle--性能优越概述:目前主流数据库包括微软: sql server和access瑞典MySql: AB公司mysqlibm公司: db2(处理海量)美国Sybase公司: Sybaseibm公司: informix美国oracle公司: oracle做项目时应当如何选择数据库?1、标的(项目预算);2、功能的要求;3、并发数(多少人用);4、安全、稳定性。
5、操作系统(unix[solaris,freeBSD,aix,hp unix]/linux/window)oracle数据库的认证oca(oracle certified associate)初级认证ocp(oracle certified professional)中级认证ocm(oracle certified master)高级认证oracle10g安装步骤:1、安装文件2、把10201_database_win32.zip文件copy到没有中文的路径下3、检查服务选项,确定本机没有安装过oracle数据库,如果有则卸载4、将压缩包解压后,双击setup.exe文件进行安装。
1.集合框架√2.泛型√3.异常√1.掌握常用的集合类(接口)2.充分理解什么是泛型3.掌握java中的异常■一个问题?前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决?请做一个公司职员薪水管理系统,要求完成如下功能:①当有新员工时,将该员工加入到管理系统①可以根据员工号,显示该员工的信息.②可以显示所有员工信息③可以修改员工的薪水⑤当员工离职时,将该员工从管理系统中删除⑥可以按照薪水从低到高顺序排序【思考题】⑦可以统计员工的平均工资和最低和最高工资.■问题分析当然,我们可以使用数组来解决,可是用数组的话,有什么问题,我们来看看:■解决之道-链表或是集合类我们想,如果有这样一种数组,它可以动态的改变就好了,java的设计者为我们提供了一系列的集合类,我们来看看.■解决之道-链表或是集合类我们想,如果有这样一种数组,它可以动态的改变就好了,java的设计者为我们提供了一系列的集合类,我们来看看.■解决之道-链表或是集合类■使用从上面的图可以看出java集合类主要有以下几种: List结构的集合类ArrayList类, LinkedList类, Vector类,Stack类Map结构的集合类HashMap类,Hashtable类Set结构的集合类HashSet类,TreeSet类Queue结构的集合Queue接口■使用我们给大家举几个案例来看看集合类的常用方法:【Demo6_1.java】和【Demo7_3.java】■具体应用在我们熟悉了一些集合类的基本用法后,我们来解决前面提出的公司职员薪水管理系统。
首先我们使用ArrayList这个集合类.案例【Demo7_2.java】■ArrayList和Vector的区别ArrayList与Vector都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也有区别:一.同步性:Vector是同步的。
JA V A学习记录第一讲//pulic:表示这个类是公共的,一个java文件中只能有一个public类//class :表示这是一个类//Hello:类名(公共类的类名必须和文件名一致)public class Hello{//一个主函数,相当于是程序的入口public static void main (String args[]){/* 多行注释*///System.out.println("hello");int a=10;// 定义一个变量,变量名位a,它的值为10// int为4个字节,long为8个字节int b=20;int result=a+b//输出结果system.out.println("结果是"+result)}}第二讲JA V A基本数据类型四大类型整数类型小数(浮点)类型基本数据类型布尔类型字符类型1.整数类型整数类型表示一个整数,常用的整数类型有:byte, short, int, long范围:byte 一个字节-128 – 127short 两个字节-32768 - 32767int 四个字节-2147483648 – 2147483647long 八个字节一个字节= 八个byte例:一个byte0 0 0 0 0 0 0 1 最高位为符号位0表示正数,1表示负数1 1 1 1 1 1 1 1 – 0 1 1 1 1 1 1 12.小数(浮点)类型常用类型有float, double3.布尔类型可以表示:真或者假,类型是boolean4.字符类型表示单个字符,字符类型是char,chai是两个字节,可以存放汉字。
多个字符称为字符串,在java中用String表示,String属于类。
.在java中,对char进行运算的时候,直接当做ascii码对应的整数对待。
(汉字则是unic码)定义变量int a初始化变量int a = 45给变量赋值int a ; a =45基本数据类型转换int a = 1.2 错误会损失精度double a = 4 正确数据类型可以自动从低精度向高精度转换。
韩顺平Java(持续更新中)原创上课笔记,转载请注明出处第⼀章⾯向对象编程(中级部分) PDF为主1.1 IDEA删除当前⾏,ctrl+y复制当前⾏,ctrl+d补全代码,alt+/添加或者取消注释,ctrl+/导⼊该⾏需要的类,alt+enter快速格式化代码,ctrl+ALT+L快速运⾏程序,alt+r(⾃⼰设置)⽣成构造器等,alt+insert查看⼀个类的层级关系,ctrl+H,继承有⽤(光标放在类名上)快速定位某个⽅法的位置,ctrl+B(ctrl+⿏标点击)⾃动分配变量,main⽅法中,.var,例如new Scanner(System.in).var查看快捷键模板:Live Templates (例如,fori)1.2 Object类详解(equals、==、hashCode等)所有类都实现了Object类,都能使⽤Object类的⽅法。
1.2.1 ==运算符基本类型—>判断值是否相等引⽤类型—>判断地址是否相等指向同⼀个地址,结果为true1.2.2 equals()⽅法1.2.2.1 基本介绍Object的equals()⼀⽬了然,==运算符,⽤来判断地址是否相等⽽String等类的equals()被重写了,⽤来判断内容是否相等(根据需求,判断内容相等的标准也是可能会有所改变的)如何重写equals⽅法:Person person1 = new Person("jack", 10, '男');Person person2 = new Person("jack", 20, '男');System.out.println(person1.equals(person2));//假,如果没有重写Person类的equals⽅法,这⾥的equals⽅法调⽤的Object的(即,判断的是地址)⽰例代码://重写Object 的 equals⽅法public boolean equals(Object obj) {//判断如果⽐较的两个对象是同⼀个对象,则直接返回trueif(this == obj) {return true;}//类型判断if(obj instanceof Person) {//是Person,我们才⽐较//进⾏向下转型, 因为我需要得到obj的各个属性Person p = (Person)obj;return .equals() && this.age == p.age && this.gender == p.gender;}//如果不是Person ,则直接返回falsereturn false;}1.2.2.2 课堂练习第三个输出:因为Person并没有重写equals,所以这⾥调⽤的equals⽅法是Object的,判断地址是否相同的,⽽这两个新的对象肯定不相等,所以返回false 这道题需要注意的是,基本数据类型的==运算符是判断内容的1.2.3 hashCode()⽅法1.2.4 toString()⽅法全类名:包名+类名/**Object的toString() 源码(1)getClass().getName() 类的全类名(包名+类名 )(2)Integer.toHexString(hashCode()) 将对象的hashCode值转成16进制字符串*/public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}1.2.5 finalize()⽅法public class Finalize_ {public static void main(String[] args) {Car bmw = new Car("宝马");//这时 car对象就是⼀个垃圾,垃圾回收器就会回收(销毁)对象, 在销毁对象前,会调⽤该对象的finalize⽅法//,程序员就可以在 finalize中,写⾃⼰的业务逻辑代码(⽐如释放资源:数据库连接,或者打开⽂件..)//,如果程序员不重写 finalize,那么就会调⽤ Object类的 finalize, 即默认处理//,如果程序员重写了finalize, 就可以实现⾃⼰的逻辑bmw = null;System.gc();//主动调⽤垃圾回收器System.out.println("程序退出了....");}}class Car {private String name;//属性, 资源。
java平台1、J2SE java开发平台标准版2、J2EE java开发平台企业版java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。
不同系统上要安装对应的虚拟机才可以运行java程序开发步骤1、编写源文件 (.java)2、编译源文件为类文件(.class)可用J2SE或J2EE编译3、在虚拟机上运行注释//单行注释/* */多行注释java内容介绍java编程可以分成三个方向:1、java se (j2se)桌面开发 java中的基础中的基础2、java ee (j2ee)web开发3、java me (j2me)手机开发java se课程介绍java面向对象编程(基础)java图开界面开发java数据库编程java文件io流编程java网络编程java多线程编程java ee基础1java面向对象编程--数据库编程-->java sejava 基础2html--css--javascript-->div+cssjava ee中级部分Servlet--Jsp-->mvc模式java ee高级部分Struts--Ejb--Hibernate--Spring--Ajax(ext,dw2)-->ssh框架java之父gosling1990 sun启动绿色计划1 | 4451992 创建oak语言-->java1994 gosling参加硅谷大会演示java功能,震惊世界1995 sun正式发布java第一个版本,目前最新是jdk7.0java开发工具记事本、(jcreator、jbuilder退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对java有一定了解后再使用eclipse高级开发工具为什么呢?1、更深刻的理解java技术,培养代码感2、有利于公司面试java语言的特点1、java语言是简单的2、java语言是面向对象的3、java语言是跨平台(操作系统)的[即一次编译,到处运行]4、java是高性能的java第一个程序hello.java运行java程序要安装和配置jdkjdk是什么?1、jdk全称java dvevlopment kit中文java开发工具包2、jdk是sun公司开发的3、jdk包括jre(java runtime envirnment)java运行环境、一堆java工具和java基础的类库(类共3600左右,常用类在150个左右)4、可以在下载**开发安装jdk,用户执行需要安装jre配置JDK添加环境变量即可windows下配置jdk在计算机属性--高级设置--环境变量--添加PATH将JDK所在路径指定即可。
韩顺平玩转Oracle10g 1.Oracle认证和安装,与其他数据库比较Oracle安装会自动的生成sys用户和system用户:(1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install(2)system用户是管理操作员,权限也很大。
具有sysoper角色,没有create database 的权限,默认的密码是manager(3)一般讲,对数据库维护,使用system用户登录就可以拉也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
2.Oracle的基本使用--基本命令sql*plus的常用命令连接命令[ect]用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper[onnect]说明: 该命令用来断开与当前数据库的连接[ord]说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。
user说明: 显示当前用户名说明: 该命令会断开与数据库的连接,同时会退出sql*plus文件操作命令和@说明: 运行sql脚本案例: sql>@ d:\或是sql>start d:\说明: 该命令可以编辑指定的sql脚本案例: sql>edit d:\,这样会把d:\这个文件打开说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
案例: sql>spool d:\ 并输入 sql>spool off交互式命令1.&说明:可以替代变量,而该变量在执行时,需要用户输入。
select * from emp where job='&job';说明:该命令可以编辑指定的sql脚本案例:SQL>edit d:\说明:该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
第1章B/S与C/S结构1.1背景知识介绍J2EE的13种技术java->servlet->jsp [技术总是有一个演变过程]zip粘贴到word设置1.2回顾一下我们现有的技术java 基础(面向对象,集合,界面,线程,文件,网络)jdbc (java 的数据库编程)oracle / mysql / sqlserverhtml css javascript (web 开发) ->网页设计xmlserlvet+jsp ->java web开发[使用java技术做web开发]java ee 体系的介绍servlet项目演示web 开发介绍①静态页面(html)②动态页面1.用户可以输入数据,和页面交互(注册,购物,发帖子,付款...)2.不同时间打开页面,内容是变化.3.目前比较流行的左动态页面的技术( servlet/jsp , php , , asp, cgi ) 1.3动态网页技术的比较(了解)1.3.1 bs 和 cs的比较(1)BS:browser server 浏览器服务器(2)cs client server 客户服务为什么需要的web服务器/web究竟是干什么的?1.3.2 模拟一个web服务器 MyWebServer.javaimport java.io.*;import .*;public class MyWebServer{public static void main(String []args) throws Exception{ServerSocket ss=new ServerSocket(80);Socket s=ss.accept();//提示一句话System.out.println("在9999 上等待连接...");OutputStream os=s.getOutputStream();BufferedReader br=new BufferedReader(new FileReader("d:\\hello.html"));String buf="";while((buf=br.readLine())!=null){os.write(buf.getBytes());}//关闭流br.close();os.close();s.close();}}第2章Tomcat的安装与详解2.1通过tomcat来讲解BS结构2.1.1安装tomcat服务器解压即可,注意,全英文路径2.1.2配置Tomcat①在环境变量中添加JAVA_HOME= 指向你的jdk的主目录(并不是bin文件目录)②在不配置JAVAHOME的前提下启动tomcat在startup.bat的第25行中添加set JAVA_HOME=JKD路径2.1.3启动tomcat服务器到tomcat 主目录下bin/startup.bat2.1.4验证是否安装成功http://localhost:8080(8080是默认端口如果该端口已经被占用需要修改端口)2.2 Tomcat安装后问题解决2.2.1 Tomcat无法正常启动的原因分析1.JAVA_HOME 配置错误,或者没有配置2.如果你的机器已经占有了8080 端口,则无法启动,解决方法(1) 你可以8080 先关闭netstat–annetstat –anb 来查看谁占用该8080(2) 主动改变tomcat的端口.到conf/server.xml 文件中修改<Connector connectionTimeout="20000" port="8088"(去修给config->server.xml的端口号)protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>3.能够正常启动,但是会导航到另外一个页面.去修改工具->管理加载项,把默认的导航给禁用即可.4.在访问tomcat时候,一定保证tomcat 服务器是启动2.3 Tomcat的目录结构文件bin: 启动和关闭tomcat的bat文件conf: 配置文件-->server.xml: 该文件用于配置和server 相关的信息, 比如tomcat启动端口后,配置Host, 配置Context 即web应用-->web.xml : 该文件配置与web应用(web应用就相当于是一个web站点)-->tomcat-users.xml: 该文件用户配置tomcat 的用户密码和权限lib目录: 该目录放置运行tomcat 运行需要的jar包logs目录:存放日志, 当我们需要去查看日志的时候,很有用!,当我们启动tomcat错误时候,可以查询信息.webapps目录: 该目录下,放置我们的web应用(web 站点), 比如:建立web1 目录下面放置我们的html 文件jsp 文件..图片... 则web1就被当做一个web应用管理起来(☞特别说明tomcat 6.0 以后支持tomcat 5 版本还有别的设置)work: 工作目录: 该目录用于存放jsp被访问后生成的对应的server文件和.class文件2.3.1如何去访问一个web 应用的某个文件2.3.2首页面设置及目录规范结构现在我们要求:把hello.html文件设置成该web应用的首页,则需要把web应用的目录格式做的更加规范:①在web文件夹下配置WEB-INF文件夹②在web.xml 文件中添加配置的代码:<welcome-file-list><welcome-file>hello1.html</welcome-file></welcome-file-list>③通过http://localhost:8088/web1来访问hello1.htmlweb-inf目录下的classes目录将来是存放class文件lib 目录将来时存放jar文件web.xml 配置当前这个web应用的信息.2.3.3 Tomcat如何去管理虚拟目录需求: 当我们把web 应用放到webapps目录,tomcat会自动管理,如果我们希望tomcat 可以管理其它目录下的web应用?->虚拟目录配置我在d 盘有一个web应用.(1)虚拟目录配置步骤:a)找到server.xml文件b)编辑host节点添加Context path在server.xml中添加:<Context path="/myweb2" docBase="d:\web2"/>myweb2:是访问时输入的web名,实际取出的是web2中的资源"d:\web2":绝对路径下web2中存放资源如:hello2.html实际访问时输入的地址:http://localhost:8088/myweb2/hello2.html绝对路径:从根分区找某个文件相对路径:从该文件位置去找另一个文件C)需要重启tomcat,才能生效.(因为是采用的dom技术讲信息加载到内存中)context 的几个属性的说明path:docbase:reloadable;如果设为ture ,表示tomcat 会自动更新web应用,这个开销大,建议在开发过程中,可以设为true, 但是一旦真的发布了,则应当设为false;upackWAR: 如果设为ture ,则自动解压,否则不自动解压.①:打war包cd:d/web2 然后jar –cvf web2.war *②:浏览打好的war包Deploy发布后会在webapps中自动生存改文件2.3.4配置域名我们看和一个如何配置自己的主机名:我们在实际访问网站的过程中,不可能使用http://localhost:8080/web应用/资源名的方式去访问网站,实际上使用类似或者的方式去访问网站,这个又是怎么实现的呢?看看ie浏览器访问一个web站点的流程.实现的步骤如下:(1) 在C:\WINDOWS\system32\drivers\etc下的host文件添加127.0.0.1 (2) 在tomcat 的server.xml文件添加主机名<Host name="" appBase="d:\web3”><Context path="/" docBase="d:\web3" /></Host>(3) 在d:\web3 加入了一个/WEB-INF/web.xml 把hello2.html设为首页面如果连端口都不希望带,则可以吧tomcat的启动端口设为80即可.(4) 重启生效2.3.5 Tomcat体系的再说明图:2.3.6如何配置默认主机在tomcat/conf/server.xml 文件<Engine name="Catalina" defaultHost="主机名">如:<Engine name="Catalina" defaultHost="">第3章为什么需要servlet技术? 3.1 servlet的介绍①servlet 其实就是java程序(java类)②该java 程序(java 类)要遵循servlet开发规范③serlvet是运行在服务端④serlvet 功能强大,几乎可以完成网站的所有功能⑤是学习jsp基础3.2 tomcat 和 servlet 在网络中的位置3.3 Servlet的生命周期3.3.1servlet的生命周期是怎样的/servlet究竟是怎样工作的UML 时序图帮助大家理解参看execel3.3.2面试题: 请简述servlet的生命周期(工作流程)答:标准版本:①WEB服务器首先会检查是否已经装载并创建了该servlet实例对象。
jdbc 详解+学生选课项目jdbc 介绍jdbc 是sun 公司定义的一套访问数据库的规范( 接口+ 类),主要是放在java.sql 包javax.sql 包. 原理图:做jdbc开发的几个前提1.import java.sql.* 有时import javax.sql.*;2.把jar 包导入到你的java项目昨天还是用jdbc 写了一个简单java程序,完成添加一条记录到oracle 数据库中.Connection接口面试题: 什么时候,需要把setAtuoCommit设为false?答:当有多个dml 同时执行,将其看做一个整体提交,则使用事务管理,则需要把setAutoCommit 设为false;具体使用方法:package cn.sp.test;import java.sql.*;import oracle.jdbc.driver.OracleDriver;public class TestJdbc {//使用jdbc去操作oracle 数据库public static void main(String[] args) {// TODO Auto-generated method stubConnection ct=null;Statement statement=null;try {//1加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");//DriverManager.registerDriver(new OracleDriver());//2得到连接ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orclhsp", "scott", "tiger");//把事务设为不自动提交ct.setAutoCommit(false);//3.创建sql对象(Statement / PreparedStatement /CallableStatement)statement=ct.createStatement();//4.通过statement向数据库发出sql 指令./* int n=statement.executeUpdate("insert into user1 values(user1_seq.nextval,'顺平','123'," +"'shunping@',sysdate,30)"); //executeupdate 执行dml(update/insert/delete)*///需求: 对emp表进行操作: 把SMITH 的sal -10 给KING sal+10statement.executeUpdate("update emp set sal=sal-10 where ename='SMITH'");int i=9/0;statement.executeUpdate("update emp set sal=sal+10 where ename='KING'");//提交所有事务mit();} catch (Exception e) {e.printStackTrace();//如果sql 语句中任何语句错误,则可以整体回滚.try {ct.rollback();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}// TODO: handle exception}finally{//关闭资源[先开后闭];if(statement!=null){try {statement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}statement=null;//使用垃圾回收.}if(ct!=null){try {ct.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}ct=null;}}}}ResultSet 的说明在默认情况下,我们的rs结果集,只能向前移动,这样rs 结果就不能复用,如果希望复用,则可以这样做://通过java 来查询所有的雇员.//假设我们希望rs结果,可以滚动(可以向前,亦可向后)ResultSet 的可选项有:resultSetType - 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE或ResultSet.TYPE_SCROLL_SENSITIVE 之一resultSetConcurrency - 并发类型;它是 ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE 之一statement=ct.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE ,ResultSet.CONCUR_READ_ONLY);rs=statement.executeQuery("select * from emp");//循环取出while(rs.next()){System.out.println(rs.getInt("empno")+" 名字"+rs.getString("ename"));}//如果我们希望,重新使用rsrs.beforeFirst();System.out.println("*********************");while(rs.next()){System.out.println(rs.getInt("empno")+" 名字"+rs.getString("ename"));}◆orace 表的数据类型和java 程序(jdbc) 的对应关系sql server 表的数据类型和java程序对应图..mysql 表的数据类和java 程序对应图...◆及时关闭资源!!!if(rs!=null){try {rs.close();} catch (Exception e) {// TODO: handle exception}rs=null;}//关闭资源[先开后闭];if(statement!=null){try {statement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}statement=null;//使用垃圾回收.}if(ct!=null){try {ct.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}ct=null;}细节:(1)尽量晚创建,早释放(2)关闭资源的代码,一定放在finallySqlHelper类的编写在进行jdbc 程序编写的时候,因为对数据库操作很多,所有都会把对数据库的各种操作,封装到一个类(SqlHelper/DBUtil),我们一起编写(1)如果访问数据库很频繁,则我们的Connection 、PreparedStatement,ResultSet.. 就不要搞成static。
1.根据需求分析文档,确定我们要完成的功能
①用户登录
②查询新闻
③添加新闻
④退出系统
2.画出uml图.
①用例图
②时序图
③类图
3.根据分析出的功能,我们设计数据库和表
--插入数据
insert into news values(1,'微软向非洲支援二手电脑',to_date('2008-06-09 15:49:00','yyyy-mm-dd hh24:mi:ss'),'微软在最近宣布它正计划向非洲国家提供技术帮助,以加速该地区的数字化进程。
据悉,微软已经与纳米比亚政府达成了协议,将在两年内向该国13所学校提供从发达国家淘汰的二手电脑,这些电脑将运行Windows系统,可以登录Google、雅虎等热门网站,不过微软并没有透露出售Windows系统给这些学校的价格。
'); insert into news values(2,'韩国失窃手机大量流入中国',to_date('2009-06-09 10:49:44','yyyy-mm-dd hh24:mi:ss'),'据韩国信息部提供的消息称,目前已经发现中国商人在韩国以每部400—500元(人民币)的价格收购被盗或丢失的市价1—2万元(人民币)的手机,然后成批走私到中国,以每部3000元以下的价格出售。
');
insert into news values(3,'明基宣布收购西门子手机',to_date('2009-06-07 16:50:33','yyyy-mm-dd hh24:mi:ss'),'明基7日下午正式对外宣布收购德国西门子手机事业,这起并购将使BenQ成为全球第四大手机品牌、大中华区第一大手机科技公司,合并后公司年营收将超过100亿美元。
');
insert into news values(4,'Google股价飙升',to_date('2009-06-03 11:30:20','yyyy-mm-dd hh24:mi:ss'),'现今的Google已经成为华尔街的宠儿。
上市后的前三个季度里,Google的业绩均超过了分析师的预期。
主要竞争对手雅虎和微软都在广告战中大把烧钱,而Google却毫不费力的依靠人们的口口相传继续保持着搜索市场的领先位置。
与此同时,Google的股价也一路飙升,目前已较发行价上涨226%,达到227美元。
');
创建一个序列:
create sequence news_seq start with1
increment by1
minvalue1
nomaxvalue
nocache
nocycle
界面设计
登录界面
查询页面
查询结果页面
新闻内容页面:
具体新闻
查询失败页面
添加新闻页面:
编码
1.创建java 工程(ecplise /netbean/jbulilder)
2.创建包
3.更加框架设计图,创建相应的类
NewsSystemFrame.java
SqlHelper.java
4.引入需要的jar包及配置文件
ojdbc14.java db..properties
5.具体实现
关键点: 假如同时提出了三个关键字,那么只有在标题或内容中都能够找到这三个查询关键字的条目才会进入查询结果
假设输入的[微软雅虎google]
select * from news
(newstitle like ‘%微软%’ or
newsContent like ‘%微软%’)
and
(newstitle like ‘%雅虎%’ or
newsContent like ‘%雅虎%’)
and
(newstitle like ‘%google%’ or
newsContent like ‘%google%’);
对model1 开发模式思考:
问题:
(1)NewsSystemFrame类是界面,同时又包含业务逻辑,这样代码可读性,可维护性不高,
(2)随着项目变大,这样开发问题多多.
(3)把界面和业务逻辑放在一起写,不利于分工合作,项目开发时间变长.
解决的思想: 把界面和业务逻辑剥离-> 新的开发模式model2 目前使用modle 2模式将上面的系统重新编写.
◆modle 2 模式开发
1.画出model 2 模式的框架图.
◆项目实现
前提: 应该把相关的数据库给编写好
(1)创建项目
使用eclipse 开发.
(2)创建包
(3)导入第三方的jar ,或者需要的配置文件
(4) 编写代码:[可能junit测试]。