




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JDBC程序的工作模板,tryClass.forName(JDBC驱动类);catch(ClassNotFoundExceptione)System.out.println(无法找到驱动类);tryConnectioncon=DriverManager.getConnection(JDBCURL,数据库用户名,密码);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery(SELECTa,b,cFROMTable1);while(rs.next()intx=rs.getInt(a);Strings=rs.getString(b);floatf=rs.getFloat(c);con.close();catch(SQLExceptione)e.printStackTrace();,获得数据库连接,发送Sql语句,处理结果,注册JDBC驱动,JDBCURL用来标识数据库,必须处理的异常,释放资源,必须处理的异常,JDBC驱动5-1,JDBC驱动由数据库厂商提供在个人开发与测试中,可以使用JDBC-ODBC桥连方式在生产型开发中,推荐使用纯Java驱动方式,DBServer,DBServer,JDBCAPI,JDBCDriverManager,纯Java驱动,JDBCODBC桥,Java应用程序,ODBC,JDBC驱动5-2,桥连将对JDBCAPI的调用,转换为对另一组数据库连接API的调用优点:可以访问所有ODBC可以访问的数据库缺点:执行效率低、功能不够强大,JDBC-ODBC桥,Java应用程序,JDBCAPI,ODBCAPI,ODBC层,DBServer,JDBC驱动5-3,使用JDBC-ODBC进行桥连1、在控制面板ODBC数据源系统DSN中配置数据源2、编程,通过桥连方式与数据库建立连接,-语法-Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connectioncon=DriverManager.getConnection(jdbc:odbc:news,sa,sa);,JDBC-ODBC桥驱动类的完全限定类名,数据源名称,演示:配置ODBC数据源,JDBC驱动5-4,纯Java驱动由JDBC驱动直接访问数据库优点:100%Java,快又可跨平台缺点:访问不同的数据库需要下载专用的JDBC驱动,JDBC驱动,Java应用程序,JDBCAPI,DBServer,JDBC驱动5-5,使用纯Java驱动方式进行直连1、下载数据库厂商提供的驱动程序包2、将驱动程序包引入工程中3、编程,通过纯Java驱动方式与数据库建立连接,-语法-StringURL=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=news;Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);Connectioncon=DriverManager.getConnection(URL,sa,sa);,sqlserver数据库驱动类的完全限定类名,演示:在工程中引入JDBC驱动程序包,数据库名称,小结1,JDBC桥连与纯Java驱动两种方式的优缺点分别是什么?JDBCURL的作用是什么?,创建数据表:FirstLevelTitle,JDBC应用,要求对新闻标题进行管理:1、新闻标题存储在SqlServer2000中2、通过JDBC对新闻标题进行增、删、改、查操作,操作步骤,使用Statement插入数据,使用PreparedStatement增、删、改、查数据,1,2,使用Statement插入数据2-1,使用桥连方式向FirstLevelTitle表中插入一条记录,代码片断publicstaticvoidmain(Stringargs)Connectioncon=null;Statementstatement=null;tryStringstrSql=insertintoFirstLevelTitlevalues(1,军事,网管,getdate();tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundExceptione)System.out.println(无法找到驱动类);con=DriverManager.getConnection(jdbc:odbc:news,sa,sa);statement=con.createStatement();statement.executeUpdate(strSql);catch(SQLExceptionsqlE)sqlE.printStackTrace();finallycloseStatement(statement);closeConnection(con);,建立连接,执行sql语句,数据库连接使用完毕,及时释放,载入JDBC-ODBC桥驱动类,异常处理,异常处理,完整代码实现,使用Statement插入数据2-2,使用纯Java驱动方式向FirstLevelTitle表中插入一条记录,代码片断publicstaticvoidmain(Stringargs)Connectioncon=null;Statementstatement=null;tryStringstrSql=insertintoFirstLevelTitlevalues(1,军事,网管,getdate();tryClass.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);catch(ClassNotFoundExceptione)System.out.println(无法找到驱动类);con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;+DatabaseName=news,sa,sa);statement=con.createStatement();statement.executeUpdate(strSql);catch(SQLExceptionsqlE)sqlE.printStackTrace();finally/释放连接,载入sqlserver数据库驱动类,建立连接,执行sql语句,完整代码实现,小结2,在使用纯Java驱动方式进行数据库连接时,如果程序在运行时抛出异常:java.sql.SQLException:Nosuitabledriverfoundforjdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=news那么出错的原因是什么?如何解决?请单独建立一个类ConnectionManager,专门负责建立数据库连接、以及关闭连接,并思考这样做带来的好处是什么,找不到合适的驱动类,原因:没有把数据库驱动包引入工程,好处在于:既便于管理、又可以提高代码的复用性,完整代码实现,PreparedStatement,PreparedStatement接口(预编译的SQL语句),Statement接口,当SQL语句将运行多次时,尽量使用PreparedStatement,以便提高运行效率,PreparedStatement接口继承Statement接口PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率,使用PreparedStatement插入数据,publicclassNewsFirstTitleDB2publicstaticvoidmain(Stringargs)Connectioncon=null;PreparedStatementpStatement=null;trySimpleDateFormathmFromat=newSimpleDateFormat(yyyy-MM-ddhh:mm:ss);con=ConnectionManager.getConnection();StringstrSql=insertintoFirstLevelTitlevalues(?,?,?,?);pStatement=con.prepareStatement(strSql);pStatement.setInt(1,1);pStatement.setString(2,军事);pStatement.setString(3,管理员);pStatement.setString(4,hmFromat.format(newDate();pStatement.executeUpdate();catch(SQLExceptionsqlE)sqlE.printStackTrace();finallyConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con);,参数化的查询语句,设置每个?参数的值,列号从1开始,执行sql语句,使用PreparedStatement删除数据,publicclassNewsFirstTitleDB3publicstaticvoidmain(Stringargs)Connectioncon=null;PreparedStatementpStatement=null;trycon=ConnectionManager.getConnection();StringstrSql=deletefromFirstLevelTitlewhereTitleName=?;pStatement=con.prepareStatement(strSql);pStatement.setString(1,军事);introw=pStatement.executeUpdate();System.out.println(“成功删除了+row+行数据!);catch(SQLExceptionsqlE)sqlE.printStackTrace();finallyConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con);,返回删除记录的行数,使用PreparedStatement更新数据,publicclassNewsFirstTitleDB4publicstaticvoidmain(Stringargs)Connectioncon=null;PreparedStatementpStatement=null;trycon=ConnectionManager.getConnection();StringstrSql=updateFirstLevelTitlesetCreator=?whereId=?;pStatement=con.prepareStatement(strSql);pStatement.setString(1,编辑);pStatement.setInt(2,1);introw=pStatement.executeUpdate();System.out.println(成功更新了+row+行数据!);catch(SQLExceptionsqlE)sqlE.printStackTrace();finallyConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con);,返回更新记录的行数,小结3,使用PreparedStatement语句执行如下操作:删除表FirstLevelTitle中所有Id小于10的记录,并在控制台输出删除记录的行数,完整代码实现,使用PreparedStatement查询数据2-1,publicclassNewsFirstTitleDB5publicstaticvoidmain(Stringargs)intid=0;Connectioncon=null;PreparedStatementpstmt=null;ResultSetresSet=null;trycon=ConnectionManager.getConnection();StringsqlStr=selectmax(id)fromFirstLevelTitle;pstmt=con.prepareStatement(sqlStr);resSet=pstmt.executeQuery();if(resSet.next()id=resSet.getInt(1);catch(Exceptione)e.printStackTrace();finallyConnectionManager.closeResultSet(resSet);ConnectionManager.closeStatement(pstmt);ConnectionManager.closeConnection(con);System.out.println(新的一级新闻标题的Id为:+(id+1);,查询新闻一级标题的Id的最大值,关闭结果集、语句、以及连接,对新闻一级标题Id的最大值加一,作为新的一级标题的Id,获取数据,列号从1开始,返回结果集,从数据库中取出所有的新闻一级标题,代码片断publicstaticListgetAllFirstLevelTitleList()/省略部分变量声明语句ArrayListlist=newArrayList();trydbConnection=ConnectionManager.getConnection();StringstrSql=select*fromFirstLevelTitleorderbyCreateTimedesc;pStatement=dbConnection.prepareStatement(strSql);res=pStatement.executeQuery();while(res.next()intid=res.getInt(id);Stringtitle=res.getString(TitleName);Stringcreator=res.getString(Creator);Datetime=res.getDate(“CreateTime”);FirstLevelTitlefTitle=newFirstLevelTitle(id,title,creator,time);list.add(fTitle);/省略catch、finally子句returnlist;,使用PreparedStatement查询数据2-2,查询新闻一级标题,创建标题对象,并添加入ArrayList中,返回结果集,完整代码实现,总结,使用PreparedStatement语句执行如下操作:取出表FirstLevelTitle中Id的最大值向表FirstLevelTitle中插入一行新记录,其中Id值为原Id最大值加一,完整代码实现,Thankyou,JSP简介,第四章,21,回顾,JDBC的英文全称是什么?JDBC的主要作用是什么?PreparedStatement与Statement相比,具有什么优势?,预习检查,为什么第一次请求JSP页面时,响应速度比较慢?JSP文件中,有几种注释方法?格式是什么?,本章任务,为新闻发布系统创建JSP页面能够在Eclipse中部署运行该新闻发布系统,掌握JSP的定义、作用、以及页面组成掌握如何创建JSP页面掌握JSP页面的执行过程,本章目标,为什么需要JSP2-1,为什么需要基于B/S技术的动态网页?B/S技术的特点是什么?,使用动态网页,可以动态输出网页内容、同用户进行交互、对网页内容进行在线更新,应用服务器,IE,IE,解释执行HTML文件,从服务器端检索到的信息,返回响应,客户端的请求信息,发送请求,运行JSP等服务器端脚本程序,1,用户输入,2,3,4,数据库服务器,为什么需要JSP2-2,如何在浏览器上动态输出当前日期?,输出当前日期你好,ACCP!今天是,显然,无法通过静态HTML完成这个效果,试一试JSP,看看是否可行,运行结果,什么是JSP,JSP(JavaServerPages)是指:在HTML中嵌入Java脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令然后将生成的整个页面信息返回给客户端,JSP页面,数据库服务器,应用服务器,客户端,Java脚本语言,1,2,3,4,JSP页面组成4-1,JSP页面的元素包括:,静态内容,指令,表达式,小脚本,HTML静态文本,以“”结束。比如:,声明,标准动作,以“”结束比如:,注释,JSP页面组成4-2,输出当前日期你好,ACCP!今天是,指令,静态内容,小脚本,表达式,注释,JSP页面组成4-3,在浏览器上观看运行结果,查看网页源文件,可以通过源代码查看到HTML注释的内容,所有注释内容都不可见,JSP页面组成4-4,合理、详细的注释有利于代码后期的维护和阅读在JSP文件的编写过程中,共有三种注释方法:HTML的注释方法:JSP注释标记:在JSP脚本中使用注释:,缺点:不安全,加大网络传输负担,小结1,请编写一个JSP页面exercise1.jsp,要求:至少包含三种注释,完整代码实现,创建新闻发布系统的JSP页面5-1,回忆第一章内容,请说明开发JSP动态网站的几个步骤,创建Web项目,开发步骤,设计Web项目的目录结构,编写代码(创建JSP),部署、运行,本章将从这里开始,带领大家创建新闻发布系统的JSP页面,创建新闻发布系统的JSP页面5-2,设计Web项目的目录结构:创建目录ch04:存放JSP页面创建目录CSS:存放样式表文件创建目录images:存放图片,创建新闻发布系统的JSP页面5-3,使用JSP模板向导创建JSP页面,共有三步:,1,2,3,右键点击“WebRoot”下的“ch04”,从右键菜单中选择:新建其他,在新弹出的窗口中,选择“Web”下的“JSP”,点击“下一步”,在下一个新弹出的窗口中,输入文件名index.jsp,点击“完成”,演示:使用JSP模板向导创建JSP页面,创建新闻发布系统的JSP页面5-4,手工创建JSP页面,共有两步:,1,2,右键点击“WebRoot”下的“ch04”,选择:新建文件,在新弹出的窗口中,输入文件名index.jsp,点击“完成”,演示:手工创建JSP页面,创建新闻发布系统的JSP页面5-5,采用你认为最方便的方式,把静态新闻发布系统的所有页面转换为JSP页面,并部署运行,演示:页面转换、并部署运行,生活中的欢迎页面,通常情况下,访问某个网站时,我们只需要知道网站的域名就可以了。比如:,现在看到的就是新浪的首页面,如何设置欢迎页面,欢迎页面,就是web应用的默认访问页面在配置文件web.xml中设置欢迎页面,index.jsp,假定在web应用(news)下存在一个index.jsp页面,输入http:/localhost:8080/news地址时,web容器会默认调用index.jsp页面,JSP执行过程2-1,3,执行,2,翻译,编译,1,请求,响应,Web容器处理JSP文件请求需要经过3个阶段:翻译阶段:JSP文件会被Web容器中的JSP引擎转换成Java源码编译阶段:Java源码会被编译成可执行的字节码执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP文件;处理完请求后,容器把生成的页面反馈给客户端进行显示,应用服务器,客户端,JSP文件,.java,.class,JSP执行过程2-2,执行,第二次请求,响应,第一次请求之后,Web容器可以重用已经编译好的字节码文件,应用服务器,客户端,.class,注意:如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译,演示:JSP页面修改前后的响应速度,JSP运行环境,Web容器(如:Tomcat)提供JSP引擎,负责JSP文件的执行,提供JSP的运行时环境在Eclipse中部署Web应用,等同于在Web容器中部署Web应用,与Eclipse中Web应用的目录结构一模一样,小结2,为什么JSP页面在第一次请求时会比较慢,而之后对同样的JSP页面的请求会非常快?,总结,欢迎登录新闻发布系统,在运行welcome.jsp时,会出现什么现象?如何改正?,出现中文乱码,把字符集改为:GBK,WEB-INF文件夹中的内容无法对外发布,把images文件夹拖至WebRoot文件夹下,Thankyou,JSP指令和脚本元素,第五章,47,回顾,为什么第一次请求JSP页面时,响应速度比较慢?JSP文件中,有几种注释方法?格式是什么?,预习检查,列举一些page指令的常用属性,并说明它们的作用在JSP文件中,有几种输出数值的方法(如:输出10与30的乘积)?分别怎样表示?,本章任务,升级新闻发布系统显示存储在数据库中的新闻一级标题页面显示效果:,掌握page指令的常用属性掌握JSP脚本元素的用法小脚本表达式方法声明,本章目标,为什么需要page指令,在Java文件中,通过两种方式引入其它包中的类:使用import关键字(优点:一次引入,处处使用)使用完全限定的类名(即必须加上包名),在Java文件中,如何引入其它包中的类?,在JSP文件中,同样可以使用import关键字引入Java类文件,一旦引入,整个JSP文件都可用。此时,需要使用到page指令。,page指令示例,输出当前日期你好,ACCP!今天是,已经通过page指令的import属性引入这些类文件了,什么是page指令,page指令通过设置内部的多个属性来定义整个页面的属性语法:page指令常用属性,小结1,编写一个JSP,要求:向一个ArrayList对象中添加10个字符串使用for循环进行添加,存储内容依次是“第1个字符串”、”第10个字符串“最后在页面上输出:添加完毕使用page指令来引入ArrayList类JSP页面不能出现中文乱码,完整代码实现,JSP脚本元素,JSP脚本元素,小脚本,表达式,声明,JSP脚本元素是用来嵌入Java代码的,主要用来实现页面的动态请求JSP脚本元素包括:,什么是小脚本,JSP小脚本就是在JSP页面里嵌入一段Java代码语法:,输出当前日期你好,ACCP!今天是,out.print负责在页面上进行输出,在JSP中嵌入的Java代码,小结2,使用两个一维数组分别存储学生姓名、学生成绩在页面中每隔一行输出一名学生的姓名与成绩运行结果示意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司班组户外活动方案
- 公司立flag活动方案
- 公司清明工会活动方案
- 公司活动中心策划方案
- 公司猜盲盒活动方案
- 公司组织跑步活动方案
- 公司新年服装定制活动方案
- 公司服装大赛活动方案
- 公司组内活动策划方案
- 2025年运动医学与运动训练课程考试试题及答案
- 中医头部刮痧技术
- 江苏省南通市海安市2023-2024学年七年级下学期期末数学试卷(含答案详解)
- DL∕T 2602-2023 电力直流电源系统保护电器选用与试验导则
- 河南省许昌市2023-2024学年三年级下学期期末质量检测语文试卷
- 2024年全国“红旗杯”班组长大赛(复赛)备考试题库(简答、案例分析题)
- 全国住房城乡建设行业职业技能大赛各赛项技术文件 C1-建筑信息模型技术员LS技术文件
- 北京大学2024年强基计划笔试数学试题(解析)
- 畜禽屠宰企业兽医卫生检验人员考试试题
- 医疗废物污水培训课件
- 设备维保的预防性维修与预防性管理
- 2022-2023学年湖北省黄冈市武穴市七年级(下)期末历史试卷(含解析)
评论
0/150
提交评论