Java Web 开发从入门到实战 课件 第11章 JDBC数据库访问_第1页
Java Web 开发从入门到实战 课件 第11章 JDBC数据库访问_第2页
Java Web 开发从入门到实战 课件 第11章 JDBC数据库访问_第3页
Java Web 开发从入门到实战 课件 第11章 JDBC数据库访问_第4页
Java Web 开发从入门到实战 课件 第11章 JDBC数据库访问_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第11章JDBC数据库访问学习目的与要求本章主要介绍在JSP程序中如何访问数据库。通过本章的学习,熟练掌握JSP对数据库的操作,包括查询、添加、更新和删除。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.1使用纯Java数据库驱动程序连接MySQLJDBC(JavaDataBaseConnectivity)是Java平台核心类库的一部分,它由一组标准接口与类组成。经常使用JDBC完成三件事:1.与指定的数据库建立连接;2.向已连接的数据库发送SQL命令;3.处理SQL命令返回的结果。使用纯Java数据库驱动程序连接数据库,需要两个步骤: 注册纯Java数据库驱动程序 和指定的数据库建立连接《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

注册纯Java数据库驱动程序每种数据库都配有自己的纯Java数据库驱动程序。可从官网“/downloads/connector/j/”下载MySQL的Java数据库驱动程序,本书采用的是mysql-connector-java-8.0.211.jar。为了连接MySQL数据库,需要将mysql-connector-java-8.0.211.jar文件复制到Web应用程序的/WEB-INF/lib目录下。然后,通过java.lang.Class类的forName(),动态注册MySQL的纯Java驱动程序,代码如下:try{

Class.forName("com.mysql.cj.jdbc.Driver");}catch(ClassNotFoundExceptione){

e.printStackTrace();}《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

和指定的数据库建立连接和MySQL数据库建立连接的代码如下:try{

Connectioncon=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8","用户名","密码");}catch(SQLExceptione){

e.printStackTrace();}MySQL默认端口号为3306;“characterEncoding=utf-8”解决中文字符乱码问题;用户名和密码是访问MySQL服务器的用户权限。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.1使用纯Java数据库驱动程序连接MySQL【例11-1】创建example11_1.jsp页面,并在该页面中使用纯Java数据库驱动程序连接数据库test,并查询数据表goods中的数据。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

访问数据库的步骤由例11-1的代码,可以看出访问数据库需要以下几个步骤:(1)导入java.sql包(2)加载驱动程序(3)连接数据库(4)访问数据库(5)处理返回的结果集(6)关闭数据库连接,释放资源《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.2数据库操作与指定的数据库建立连接后,就可以使用JDBC提供的API对数据库进行操作,包括查询、新增、更新、删除等操作。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.2.1查询操作和数据库建立连接后,对数据库表进行查询操作的步骤如下:1.创建Statement对象由已创建的Connection对象con调用createStatement()方法创建Statement对象,代码如下:Statementsmt=con.createStatement();2.执行SQL查询语句创建Statement对象后,可以使用Statement对象调用executeQuery(String

sql)方法执行SQL查询语句。该方法返回ResultSet对象,代表查询结果。3.处理查询结果ResultSet对象是executeQuery(Stringsql)方法的返回值,被称为结果集,它代表符合SQL查询语句的所有行。ResultSet对象自动维护指向其当前数据行的游标。每调用一次next()方法,游标向下移动一行。最初它位于结果集的第一行之前,因此第一次调用next(),将把游标置于第一行上,使它成为当前行。随着每次调用next(),导致游标向下移动一行,按照从上至下的次序获取ResultSet行,实现顺序查询。ResultSet对象包含SQL查询语句的执行结果。它通过一套get()方法对这些行中数据访问,即使用getXxx()方法获得数据。get方法很多,究竟用哪一个getXxx()方法,由列的数据类型来决定。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.2.2新增、更新与删除操作和数据库建立连接后,对数据库表进行新增、更新与删除操作的具体步骤如下:1.创建Statement对象Statement对象的创建与查询操作一样,由已创建的Connection对象con调用createStatement()方法创建Statement对象。2.执行SQL语句,完成新增、更新与删除操作创建Statement对象后,可以使用Statement对象调用executeUpdate(String

sql)方法执行SQL语句,完成新增、更新与删除操作。executeUpdate(String

sql)方法主要用于执行INSERT、UPDATE或DELETE语句以及SQL

DDL语句,例如CREATE

TABLE和DROP

TABLE。该方法返回一个整数(代表被更新的行数),对于CREATE

TABLE和DROP

TABLE等不操作行的指令,返回零。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.2.2新增、更新与删除操作【例11-2】编写两个JSP页面:addGoods.jsp和showAllGoods.jsp。用户可以在addGoods.jsp页面中输入信息,单击“添加”按钮把信息添加到goods表中。在showAllGoods.jsp页面中显示所有商品信息。在该例中需要编写一个Servlet(GoodsServlet.java)用来实现添加和查询记录,还需要实体类Goods封装查询的商品信息。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.2.3实践环节——使用Statement语句实现多条件查询编写两个JSP页面:inputQuery.jsp和showGoods.jsp。用户可以在inputQuery.jsp页面输入查询条件,单击“查询”按钮后,在showGoods.jsp页面中显示符合查询条件的商品信息。需要编写一个Servlet类SelectGoodsServlet.java实现该题的条件查询功能,另外需要使用例11-2的实体类Goods。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.3游动查询有时候需要结果集的游标前后移动,这时可使用滚动结果集。为了获得滚动结果集,必须首先用下面的方法得到一个Statement对象:

Statementst=con.createStatement(inttype,intconcurrency);根据type和concurrency的取值,当执行ResultSet

rs

=st.executeQuery(Stringsql)时,会返回不同类型的结果集。type的取值决定滚动方式,它的取值是:

ResultSet.TYPE_FORWORD_ONLY:表示结果集只能向下滚动。

ResultSet.TYPE_SCROLL_INSENSITIVE:表示结果集可以上下滚动,当数据库变化时,结果集不变。

ResultSet.TYPE_SCROLL_SENSITIVE:表示结果集可以上下滚动,当数据库变化时,结果集同步改变。Concurrency的取值表示是否可以用结果集更新数据库,它的取值是:

ResultSet.CONCUR_READ_ONLY:表示不能用结果集更新数据库表。

ResultSet.CONCUR_UPDATETABLE:表示能用结果集更新数据库表。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.3游动查询【例11-3】编写一个Servlet(MoveSelectServlet.java),在Servlet中查询goods表中的记录,并在showMoveGoods.jsp页面中逆序显示偶数行的记录。在本例中需要使用例11-2的实体类Goods,但需要为Goods添加一个属性rowno封装行号。首先,运行Servlet,结果如图11.4所示。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.4使用连接池数据库连接池的基本思想是:为数据库连接建立一个“缓冲池”。预先在“缓冲池”中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。可以通过设定连接池最大连接数来防止系统无限度地与数据库连接。更为重要的是,通过连接池的管理机制监视数据库连接的数量及使用情况,为系统开发、测试和性能调整提供依据。用户1用户2Servlet或JSP线程1线程2连接池建立连接管理连接释放连接数据库请求请求取得连接放回连接放回连接取得连接图11.5连接池的原理《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.4使用连接池【例11-4】编写一个JSP页面conPool.jsp,在该页面中使用scope为application的Bean(由ConnectionPool负责创建)。该Bean创建时,将建立一定数量的连接对象。因此,所有的用户将共享这些连接对象。在JSP页面中使用Bean获得一个连接对象,然后使用该连接对象访问数据库中goods表(查询出商品价格大于50的商品)。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.5.1连接SQLServer数据库1.获取纯Java数据库驱动程序可以登录微软的官方网站/zh-cn/sql/connect/jdbc/下载Microsoft

JDBC

Driver

for

SQL

Server(本书下载的是sqljdbc__chs.zip),解压后得到多个mssql-jdbc-11.2.1.jreX.jar(对应Java

X)文件。然后,根据Java版本将对应的JAR文件复制到Web应用程序的/WEB-INF/lib目录下。2.加载驱动程序Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.5.1连接SQLServer数据库3.建立连接Connectioncon=DriverManager.getConnection(url);其中url为连接地址,根据实际情况具体示例如下。(1)使用用户名和密码连接到本地计算机上的默认数据库:Stringurl="jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=*****";(2)使用集成身份验证连接到本地计算机上的默认数据库:Stringurl="jdbc:sqlserver://localhost;encrypt=true;integratedSecurity=true";(3)连接到远程服务器上的指定数据库:Stringurl="jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true";(4)连接到远程服务器上的默认端口:Stringurl="jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true";(5)通过指定自定义应用程序名称进行连接:Stringurl="jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp";《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.5.2连接Oracle数据库1.获取纯Java数据库驱动程序以Oracle19c为例,Oracle19c的纯Java驱动程序一般位于数据库安装包解压后目录“\jdbc\lib”下,名为ojdbc8.jar。为了连接Oracle19c数据库,可以将ojdbc8.jar文件复制到Web应用程序的/WEB-INF/lib目录下。2.加载驱动程序Class.forName("oracle.jdbc.driver.OracleDriver");3.建立连接Connectioncon=DriverManager.getConnection("jdbc:oracle:thin:@主机:端口号:数据库名","用户名","密码");其中,主机是安装Oracle服务器的IP地址,如果是本机则为“localhost”;Oracle默认端口号为1521;Oracle默认数据库名为orcl;用户名和密码是访问Oracle服务器的用户权限。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.6.1预处理语句的优点Statement对象在每次执行SQL语句时都将该语句传送给数据库,然后数据库解释器负责将SQL语句转换成内部命令,并执行该命令,完成相应的数据库操作。这种机制,每次向数据库发送一条SQL语句时,都要先转化成内部命令,如果不断的执行程序,就会加重解释器的负担,影响执行的速度。而PreparedStatement对象,将SQL语句传送给数据库进行预编译,以后需要执行同一条语句时就不再需要重新编译,直接执行就可以了,这样就大大提高了数据库的执行速度。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.6.2使用通配符可以使用Connection的对象con调用prepareStatement(String

sql)方法对参数sql指定的SQL语句进行预先编译,生成数据库的底层命令,并将该命令封装在PreparedStatement对象中。对于SQL语句中变动的部分,可以使用通配符“?”代替。例如:PreparedStatementps=con.prepareStatement("insertintogoodsInfovalues(?,?,?,?)";然后使用对应的setXxx(intparameterIndex,xxxvalue)方法设置“?”代表的值,其中参数parameterIndex用来表示SQL语句中从左到右的第parameterIndex个通配符号,value代表该通配符所代表的具体值。例如:ps.setInt(1,9);ps.setString(2,"手机");ps.setDouble(3,1900.8);ps.setString(4,"通信");若让SQL语句执行生效,需使用PreparedStatement的对象ps调用executeUpdate()方法。如果是查询的话,ps就调用executeQuery()方法,并返回ResultSet对象。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.6.2使用通配符【例11-5】将例子11-2修改为使用PreparedStatement语句实现。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.6.3实践环节——使用PreparedStatement语句实现多条件查询将11.2.3的实践环节修改为使用PreparedStatement语句实现。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.7分页查询分页查询一般有两种实现方式:一次查询出所有数据,在页面中进行分页显示;每页查询一次,每次只查询本页显示的数据。本节采用第二种方式实现分页查询。下面通过一个实例介绍分页查询。【例11-6】编写一个Servlet类SelectGoodsByPageServlet,在该Servlet类中实现分页查询goods表的数据,假设每页显示3条数据。另外,需要编写一个显示数据页面showGoodsByPage.jsp。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录11.1使用纯Java数据库驱动程序连接MySQL11.2数据库操作11.3游动查询11.4使用连接池11.5其他典型数据库的连接11.6使用PreparedStatement语句访问数据库11.7分页查询11.8Excel与数据库互访《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.8Excel与数据库互访Java读写Excel文件有两种途径:一个是POI(Apache

POI),一个是jExcelAPI(即jxl)。POI为Apache公司的一个子项目,主要是提供一组操作windows文档的Java

API。jxl是一开放源码项目,通过它Java开发人员可以读写Excel文件、更新已经存在的Excel文件。目前,jxl只能处理Excel

07之前的版本,即xls文件;而POI方式可以处理xls跟xlsx文件。本节使用POI方式读写Excel文件。可以从官网/download.html下载POI的JAR包。本书下载的是poi-bin-3.17-20170915.tar.gz版本。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.8Excel与数据库互访读写xls格式时需要导入poi-3.17.jar,读写xlsx格式时还需要导入poi-ooxml-3.17.jar和poi-ooxml-schemas-3.17.jar。当操作word、ppt、viso、outlook等文档时需要导入poi-scratchpad-3.17.jar。除了导入这些JAR包外,还需要将它们的依赖包导入,即将lib和ooxml-lib目录下的JAR包导入。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

11.8.1向数据库导入Excel本小节详细讲解如何将Excel文件内容导入到数据库的数据表中。下面以一个实例进行讲解。该实例的功能需求是,将Excel文件中的商品信息导入到数据表goods中。1.创建Exc

温馨提示

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

评论

0/150

提交评论