JSP数据库应用开发市公开课一等奖省赛课获奖课件_第1页
JSP数据库应用开发市公开课一等奖省赛课获奖课件_第2页
JSP数据库应用开发市公开课一等奖省赛课获奖课件_第3页
JSP数据库应用开发市公开课一等奖省赛课获奖课件_第4页
JSP数据库应用开发市公开课一等奖省赛课获奖课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP数据库应用开发主讲:索望suowang@成都信息工程学院网络工程系/10/101JSP数据库应用开发第1页内容提要数据库基础知识SQL语言惯用SQL指令使用以及惯用SQL函数使用。惯用DBMS(数据库管理系统)JSP中使用JDBC开发数据库应用JDBCJDBC四种驱动类型JDBCAPI怎样用JDBC连接并操作数据库用JavaBean操作数据库应用实例2JSP数据库应用开发第2页数据库基础知识数据库按一定数据结构组织并存放在计算机中一组相关数据集合。能为各种用户共享,含有最小冗余;数据之间紧密联络,而又有较高独立性。数据库管理系统管理数据库系统软件数据库系统在计算机系统中引入数据库后组成系统表(Table)一条统计(Record)数据库3JSP数据库应用开发第3页数据库应用开发介绍作为有效数据存放和组织管理工具,数据库应用日益广泛当前主流数据库产品有Oracle、SQLServer、DB2和MySQL等各种。在数据库开发领域中,需要掌握:SQL语言、数据访问接口:JDBC使用。4JSP数据库应用开发第4页SQL语言概述SQL(StructuredQueryLanguage)是关系型数据库管理系统标准语言,用于和各类数据库连接,提供通用数据管理和查询功能。SQL可认为各种支持SQL-92标准数据库管理系统(DBMS)所接收和处理,通常各种DBMS都提供图形用户界面,以使用户直接对数据库进行操作。但SQL语言本身并不是完整编程语言,还需要与其他高级编程语言配合,才能实现应用程序对数据库访问操作。5JSP数据库应用开发第5页SQL语句分类SQL分类描述数据定义语言(DDL)数据定义语言(DDL)用于定义、修改或者删除数据库对象,如CreateTable、DropTable、CreateIndex等数据操纵语言(DML)数据操纵语言(DML)用于访问、建立或者操作在数据库中已经存在数据,如Select、Insert、Update和Delete等等。数据控制语言(DCL)数据控制语言(DCL)管理对数据库内对象访问权限授予、变更和回收,如Grant、Revoke等等。6JSP数据库应用开发第6页基本SQL语句数据库数据类型不一样数据库管理系统数据类型是不一样;惯用数据类型有:数字类型日期和时间类型字符和字符串类型对数据库最惯用四大基本操作:查询(Select)插入(Insert)更新(Update)删除(Delete)也有称为CRUD:Create(创建)、Read(读取)、Update(更新)和Delete(删除)

7JSP数据库应用开发第7页SELECT语句假定:有一个数据表,Students基本句型一:(最简单SELECT语句)SELECT

字段名FROM

数据表例1.功效说明:将Students表中全部字段取出来。SELECT*FROMStudents例2.功效说明:将Students表中姓名字段取出来SELECT姓名FROMStudents

Id姓名语文数学外语8JSP数据库应用开发第8页SELECT语句基本句型二:使用条件查询SELECT字段名FROM数据表WHERE

筛选条件SELECT*FROMStudentsWHERE数学>60;例1.功效说明:把全部数学成绩大于60分统计选出来。SELECT*FROMStudentsWHERE数学=88or语文=88;例2.功效说明:把数学成绩等于88分或者语文成绩等于88分人选出来。例3.Like子句基本格式一:“_”匹配。 功效说明:每个下划线匹配一个任意字符,注意只匹配一个字符。比如:姓名like‘_敏’,匹配姓名以“敏”字结尾且字数等于二全部数据统计,如:“张敏”。

SELECT*FROM数据库表WHERE姓名Like'_敏‘例4.Like子句基本格式二:“%”匹配。 比如:姓名Like‘%敏%’,匹配姓名中出现“敏”全部数据统计,如:“周惠敏”,“于敏”、“敏大”、“敏二”等。比如要在数据库中查询姓江人,只要利用一条SQL语句就能够了,

SELECT*FROM数据库表WHERE姓名Like'江%'。9JSP数据库应用开发第9页SELECT语句基本句型三:进行排序SELECT字段名FROM数据表ORDERBY字段名SELECT*FROMStudentsORDERBY数学(注:从低到高排序) 例1.功效说明:从Students表中取出全部字段,并按数学成绩排序。SELECT*FROMStudentsORDERBY数学,语文 例2.功效说明:从Students表中取出全部字段,并按数学成绩排序,假如数学成绩相同则按照语文成绩排序。SELECT*FROMStudentsORDERBY数学desc 例3.功效说明:从Students表中取出全部字段,并按数学成绩倒序。注:从高到低排序10JSP数据库应用开发第10页DELETE语句DELETE语句:从表中删除一条或多条数据统计。基本语法:DELETEFROM

数据表WHERE

条件例子:功效说明:删除全部数学成绩为零统计,假如没有WHERE子句,则删除全部统计。DELETEfromStudentsWHERE数学=011JSP数据库应用开发第11页UPDATE语句UPDATE语句:更新表中一条或多条数据统计。基本语法:UPDATE

数据表SET

字段值=新值WHERE条件例1:将Students表中全部些人成绩加10分UPDATEStudentsSET数学=数学+10例2:将姓名中含有敏人数学成绩更新为100分UPDATEStudentsSET数学=100WHERE姓名like'%敏%'

12JSP数据库应用开发第12页INSERT语句INSERTINTO语句:添加一条或多条数据统计到表中。基本格式1:INSERTINTO

数据表VALUES(字段新值)基本格式2:INSERTINTO

数据表(字段一,字段二,……)VALUES

(字段新值)其中关键字两种格式区分是:当values含有数据库表全部字段值,而且次序和数据库字段一致时,就能够省略数据库表后面字段名称。例1:INSERTINTOStudents(姓名,数学)VALUES('周润发',70)例2:INSERTINTOStudentsVALUES(56,'周润发','网络',70,80,90,89) 功效说明:该语句等价于:

INSERTINTOStudents(ID,姓名,专业,语文,数学,外语,专业课)VALUES(56,'周润发','网络',70,80,90,89)13JSP数据库应用开发第13页数据库管理系统(DBMS)Windows平台:SQLServer开源平台:MySQLJava平台纯Java数据库Derby14JSP数据库应用开发第14页使用JDBC开发数据库应用ODBC数据访问接口开放式数据库互连ODBC(OpenDataBaseConnectivity)是微软企业开发一套开发数据库系统应用程序接口规范,它支持应用程序以标准ODBC函数和SQL语句操作各种不一样数据库。15JSP数据库应用开发第15页JDBC数据访问接口为支持Java程序数据库操作功效,Java语言采取了专门Java数据库编程接口(JDBC,JavaDataBaseConnectivity),用于在Java程序中实现数据库操作功效并简化操作过程。JDBC支持基本SQL语句,提供多样化数据库连接方式,为各种不一样数据库提供统一操作界面JDBC可做三件事:1、与数据库建立连接2、发送SQL语句3、处理结果

16JSP数据库应用开发第16页JDBC四种驱动程序类型JDBC-ODBC桥接驱动程序:JDBC-ODBC桥驱动程序提供将JDBC数据转换为ODBC数据起源,再利用ODBC与数据库传输数据。在服务器上必须能够安装ODBC驱动程序。性能不好应用程序JDBC-ODBC桥接器ODBC

Driver数据库SQL语句结果集17JSP数据库应用开发第17页原生API驱动:这种类型驱动程序把客户机API上JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS所指定原生码。应用程序JDBC驱动程序原生驱动程序数据库SQL语句结果集18JSP数据库应用开发第18页JDBC经过网络纯Java驱动程序:这种驱动程序将JDBC转换为与DBMS无关网络协议,之后这种协议又被某个服务器转换为一个DBMS协议。这种网络服务器中间件能够将它纯Java客户机连接到各种不一样数据库上。应用程序JDBC驱动程序中间件数据库SQL语句结果集19JSP数据库应用开发第19页当地协议纯Java驱动程序:这种类型驱动程序由纯Java所写成,而且直接与数据库连接。性能最好

应用程序JDBC驱动程序数据库SQL语句结果集20JSP数据库应用开发第20页使用JDBC访问数据库第一步下载并安装JDBC驱动程序。MySQL数据库JDBC驱动下载驱动程序mysql-connector-java-5.1.7-bin.jar将mysql-connector-java-5.1.7-bin.jar拷贝到WebRoot/WEB-INF/lib目录下SQLServer数据JDBC驱动下载地址:/downloads/details.aspx?familyid=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en安装JDBC驱动程序,是个exe文件将%JDBC驱动程序安装目录%/lib/mssqlserver.jar,msbase.jar,msutil.jar拷贝到WebRoot/WEB-INF/lib目录下Derby数据JDBC驱动将驱动derbyclient.jar拷贝到WebRoot/WEB-INF/lib目录下21JSP数据库应用开发第21页创建一个基本JDBC应用步骤一:注册一个driver;步骤二:建立一个到数据库连接;步骤三:创建一个statement;步骤四:执行SQL语句;步骤五:处理结果;步骤六:关闭JDBC对象importjava.sql.*;classFirstJDBCApp{ publicstaticvoidmain(String[]args) { Connectionconn=null; Statementstmt=null; ResultSetrst=null; try{

Class.forName("com.mysql.Driver");

Stringurl="jdbc:mysql://localhost:3306/JSPCourse";

Stringuser=“root"; Stringpassword="123456";

conn=DriverManager.getConnection(url,user,password);

System.out.println("成功连接上数据库!");

stmt=conn.createStatement();

rst=stmt.executeQuery("Select*fromstudents");

while(rst.next()){ System.out.println(rst.getString("Name")); } } catch(Exceptione){ System.out.println("登录失败!"); e.printStackTrace(); }

conn.close(); }}1、加载并注册驱动器2、建立连接3、创建Statement4、执行SQL语句5、处理结果6、关闭连接22JSP数据库应用开发第22页1、Class类经过调用forName方法加载Driver类一个实例并注册到DriverManager类2、DriverManager类调用getConnection方法获取一个与数据库连接Connection3、用Connection对象创建Statement,依据不一样需求,创建不一样Statement4、用Statement对象执行SQL语句,得到结果集ResultSet23JSP数据库应用开发第23页JDBCAPI

24JSP数据库应用开发第24页Driver接口加载驱动程序,不一样数据库系统有不一样加载代码:MySQL数据库:Class.forName(“com.mysql.jdbc.Driver");Class.forName("org.gjt.mm.mysql.Driver");MSSQLServerClass.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")OracleClass.forName(“oracle.jdbc.driver.OracleDriver”);DB2Class.forName(“com.ibm.db2.jdbc.app.DB2Driver”);Access(使用ODBC)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");DerbyClass.forName("org.apache.derby.jdbc.ClientDriver")25JSP数据库应用开发第25页Driver接口加载驱动程序后,驱动程序会建立一个Driver对象,并用registerDriver(Driverdriver)方法向DriverManager来注册此对象犯错情况:Classnotfound无法找到JDBC驱动程序类,犯错在没有将JDBC驱动包加入lib包中或加入环境变量classpath中Drivernotfound没有用DriverManager类注册JDBC驱动,处理方法:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();26JSP数据库应用开发第26页DriverManager类DriverManager类是JDBC管理层,作用于用户与驱动程序之间。建立与数据库之间连接,也就是创建一个Connection实例。DriverManager类getConnection()方法将建立数据库连接:publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException一样,不一样数据库系统,其URL也是不一样:在程序最终,应该关闭Connection对象:publicvoidclose()throwsSQLExceptionMySQLurl="jdbc:mysql://localhost:3306/dbName";MSSQLServerurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbName";Oracleurl="jdbc:oracle:thin:@localhost:1521:dbName";DB2url="jdbc:db2://localhost:5000/dbName";27JSP数据库应用开发第27页Connection接口Connection对象代表与数据库连接,Connection接口也是最频繁使用接口之一。惯用方法:close()StatementcreateStatement()StatementcreateStatement(intresultSetType,intresultSetConcurrency)PreparedStatementprepareStatement(Stringsql)CallableStatementprepareCall(Stringsql)……28JSP数据库应用开发第28页Statement接口Statement接口对象用于将SQL语句发送到数据库中,并访问结果。通惯用于执行单次操作。Statement接口提供了三种执行SQL语句惯用方法:publicResultSetexecuteQuery(Stringsql)throwsSQLException用于产生单个ResultSet语句,比如SELECT语句。publicintexecuteUpdate(Stringsql)throwsSQLException用于执行INSERT、UPDATE或DELETE语句以及SQLDDL语句,比如CREATETABLE和DROPTABLE。该方法返回一个整数,指示受影响行数。booleanexecute(String

sql)不知道是查询还是更新情况下,用此方法,返回是否有结果集29JSP数据库应用开发第29页PreparedStatement接口预编语句(PreparedStatement)接口从Statement继承而来与Statement相比:用于屡次执行SQL操作,每次只是数据不一样包含是已编译好SQL语句SQL语句中有一个或多个参数,用?替换,而且要用setXXX方法来设定?代表值。PreparedStatementstmt=conn.prepareStatement(“INSERTINTOmyTablevalue(?,?,?)”);stmt.setString(1,”Jack”);stmt.setString(2,”1234”);stmt.setInt(3,30);30JSP数据库应用开发第30页CallableStatement接口存放过程:在执行应用程序之前,存放过程就已经内建在数据库中,在执行应用程序时,直接以名称存取存放过程。优点:执行速度更加快若语法有错,能够在编译时期就处理,而不是执行期开发人员只需要知道存放过程名称、输入和输出就能顺利执行31JSP数据库应用开发第31页ResultSet接口ResultSet对象包含符合SQL语句执行结果全部行,而且它经过一套get方法提供了对这些行中数据访问,惯用get方法有:intgetInt(intcolumnIndex),取得当前行中第columnIndex列整数值。intgetInt(StringcolumnName),取得当前行中列名为columnName整数值。DategetDate(intcolumnIndex),取得当前行中第columnIndex列日期值。DategetDate(StringcolumnName),取得当前行中列名为columnName日期值。publicStringgetString(intcolumnIndex),取得当前行中第columnIndex列字符串值。publicStringgetString(StringcolumnName),取得当前行中列名为columnName字符串值。其它类型get方法能够参考java文档。ResultSet维护指向其当前数据行光标,让光标向下移动一行方法是:publicbooleannext()throwsSQLException32JSP数据库应用开发第32页结果集并发性结果集并发性(Concurrency)决定ResultSet对象是否能够修改数据库中行。能够使用ResultSet类中定义int常量来指定结果集并发性。ResultSet.CONCUR_READ_ONLY,指定ResultSet对象不能修改数据库,默认值。ResultSet.CONCUR_UPDATABLE,指定ResultSet对象能够修改数据库。33JSP数据库应用开发第33页MSSQL.html<html><head><title>CH14-Mysql.html</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body>

<h2>JDBC应用</h2><formname="form"action="MSSQL.jsp"method="post"><p>用户名:<inputname="last_name"type="text"id="last_name"></p><p>密码:<inputname="first_name"type="text"id="first_name"></p><p><inputtype="submit"value="提交"><inputtype="reset"value="重写"></p></form></body></html>MSSQL.JSP<%@pageimport="java.sql.*"%><%@pagecontentType="text/html;charset=gb2312"%><html><head><title>CH14-MSsql.jsp</title></head><body><h2>将信息存入SQLServer</h2><% Connectioncon=null; Statementstmt=null; Statementstmt1=null; ResultSetrs=null; request.setCharacterEncoding("GB2312"); Stringemployee_id=null; Stringlast_name=request.getParameter("last_name"); Stringfirst_name=request.getParameter("first_name"); Stringbirth="1978/12/11"; Stringsex="F"; Stringemail="aaa@"; Stringnew_last_name=""; Stringnew_first_name=""; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JSPCourse";

Stringuser="sa"; Stringpassword="123456"; conn=DriverManager.getConnection(url,user,password); stmt=con.createStatement(); Stringupd="INSERTINTOemployee(employee_id,last_name,first_name,birth,sex,email)VALUES("+employee_id+",'"+last_name+"','"+first_name+"','"+birth+"','"+sex+"','"+email+"')"; stmt.executeUpdate(upd); stmt1=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); Stringquery="SELECT*FROMemployee"; rs=stmt1.executeQuery(query); rs.last(); new_last_name=rs.getString("last_name"); new_first_name=rs.getString("first_name"); stmt.close(); stmt1.close(); con.close(); } catch(SQLExceptionsqle) { out.println("sqle="+sqle); } finally { try{ if(con!=null) { con.close(); } } catch(SQLExceptionsqle) { out.println("sqle="+sqle); } }%></body></html>34JSP数据库应用开发第34页<%@pagecontentType="text/html;charset=BIG5"import="java.sql.*"%><HTML><HEAD><METAHTTP-EQUIV="Content-Type"CONTENT="text/html;charset=gb2312"></HEAD><BODY><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JSPCourse";Stringuser="sa";Stringpassword="123456";Connectionconn=DriverManager.getConnection(url,user,password);//使用PrepareStatementStringchangeUpdate="UPDATEBooks_InfoSETprice=?,publisher=?Wherebook_id=?;";PreparedStatementpstmt=con.prepareStatement(changeUpdate);//指定更新pstmt.setInt(1,700);pstmt.setString(2,"电子出版社");pstmt.setString(3,"5");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论