JSP中基本数据库操作.ppt_第1页
JSP中基本数据库操作.ppt_第2页
JSP中基本数据库操作.ppt_第3页
JSP中基本数据库操作.ppt_第4页
JSP中基本数据库操作.ppt_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

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

文档简介

2019年7月21日,1,| 海 有 | 壁 无 |一切为了学生。 | 纳 容 | 立 欲 |为了学生一切。 | 百 乃 | 千 则 |岂能事事如意,但求无愧于心。 | 川 大 | 仞 刚 |把微笑留给世界,让世界因你微笑!,2019年7月21日,2,温故而知新!,2019年7月21日,3,第5章 JSP的常用内置对象,5.1 out对象 5.1.1 out对象的基础知识 5.1.2 out对象应用实例 5.2 request对象 5.2.1 request对象的基础知识 5.2.2 request对象应用实例 5.3 response对象 5.3.1 response对象的基础知识 5.3.2 response对象应用实例 5.4 session对象 5.4.1 session对象的基础知识 5.4.2 session对象应用实例,2019年7月21日,4,5.5 pageContext对象 5.5.1 pageContext对象的基础知识 5.5.2 pageContext对象应用实例 5.6 exception对象 5.6.1 exception对象的基础知识 5.6.2 exception对象应用实例 5.7 application对象 5.7.1 application对象的基础知识 5.7.2 application对象应用实例 5.8 常见问题及解决方案,2019年7月21日,5,第6章 JSP中基本数据库操作,6.1 JDBC基础知识 6.2 通过JDBC-ODBC桥访问数据库 6.3 通过JDBC驱动访问数据库 6.4 查询数据库及其应用实例 6.5 更新数据库(增、删、改)及其应用实例 6.6 JSP在数据库应用中的相关问题 6.7 学生信息管理系统应用实例 6.8 常见问题及解决方案,2019年7月21日,6,6.1 JDBC基础知识,JDBC全称为Java DataBase Connectivity,两组分别面向应用程序开发人员和数据库驱动程序开发人员的应用程序接口 (Application Programming Interface,API),以及将前者向后者转化的内在封装逻辑。 JDBC是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。JDBC也是java核心类库的一部分,由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。,2019年7月21日,7,JDBC的功能: (1)同一个数据库建立连接; (2)向数据库发送SQL语句; (3)处理数据库返回的结果。,2019年7月21日,8,JDBC结构,2019年7月21日,9,1. 应用程序 应用程序实现JDBC的连接、发送SQL、然后获取结果的功能,执行以下任务:与数据源请求建立连接;向数据源发送SQL请求;为结果集定义存储应用和数据类型;询问结果;处理错误;控制传输,提交操作;关闭连接。 2. JDBC API JDBC API是一个标准统一的SQL数据存取接口。为Java程序提供统一的操作各种数据库的接口。程序员编程时,不用关心它所要操作的数据库是哪种数据库,从而提高了软件的通用性。只要系统上安装了正确的驱动器组件,JDBC应用程序就可以访问其相关的数据库。,2019年7月21日,10,3. 驱动程序管理器 JDBC驱动程序管理器的主要作用是代表用户的应用程序调入特定驱动程序,要完成的任务包括:为特定数据库定位驱动程序;处理JDBC初始化调用等。 4. 驱动程序 驱动程序实现JDBC的连接,向特定数据源发送SQL声明,并且为应用程序获取结果。 5. 数据库 数据库是应用程序想访问的数据源(如Oracle、Microsoft SQL Server、MySQL)。,2019年7月21日,11,第6章 JSP中基本数据库操作,6.1 JDBC基础知识 6.2 通过JDBC-ODBC桥访问数据库 6.3 通过JDBC驱动访问数据库 6.4 查询数据库及其应用实例 6.5 更新数据库(增、删、改)及其应用实例 6.6 JSP在数据库应用中的相关问题 6.7 学生信息管理系统应用实例 6.8 常见问题及解决方案,2019年7月21日,12,6.2 通过JDBC-ODBC桥访问数据库,6.2.1 通过桥访问Access及其应用实例 6.2.2 通过桥访问Excel及其应用实例 6.2.3 通过桥访问Microsoft SQL Server 2008及其应用实例,2019年7月21日,13,Java.sql.DriverManager:处理驱动的调入并对产生新的数据局连接提供支持。 Java.sql.Connection:对特定数据库连接。 Java.sql.Satement:一个容器,对特定的数据库执行SQL语句。 Java.sql.ResultSet:对特定语句的行数据的存取。 Java.sql.ResultSet分为: Java.sql.PreparedStatement:用于执行预编译的SQL语句。 Java.sql.CallableStatement:用于执行对数据库内嵌过程的调用。,2019年7月21日,14,使用JDBCODBC桥访问数据库,由于微软的数据库不是用Java语言来编写的,但是需要用Java语言连接微软的数据库,这样就要编写一个桥连接,使Java语言编写的代码也可以操作数据库。JDBC- ODBC桥驱动程序由Sun与Merant公司联合开发,主要功能是把JDBC API调用转换成ODBC API调用,然后ODBC API调用针对供应商的ODBC驱动程序来访问数据库,即利用JDBC- ODBC桥通过ODBC来访问数据库。 JDBC-ODBC桥是一个JDBC驱动程序, 对ODBC而言,它像是通用的应用程序, 桥为所有适用于ODBC的数据库实现JDBC连接。桥驱动程序为Java应用程序提供了一种把JDBC调用映射为ODBC调用的方法。因此,需要在客户端机器上安装ODBC驱动。JDBC-ODBC桥在JDBC API和ODBC API之间提供了一个桥梁,桥把标准的JDBC 调用翻译成对应的ODBC调用,然后通过ODBC库把它们发送到ODBC数据源中。 建议尽可能使用纯Java JDBC驱动程序代替桥和ODBC驱动程序,这可以完全省去了ODBC所需的客户机配置,也免除了Java虚拟机被桥引入的本地代码中的错误所产生破坏的可能性。,2019年7月21日,15,1. 创建Access文件 使用Office中的Access应用程序,创建一个数据库名为stu.mdb的数据库,并在该数据库中创建一个名为stuInfo的表。数据库名、表名以及表中数据如图6-2所示。,2019年7月21日,16,2019年7月21日,17,2019年7月21日,18,2. 配置数据源 通过JDBC-ODBC桥访问Access需要配置数据源,配置步骤如下: (1)点击“控制面板”-“管理工具”-“数据源(ODBC)”,弹出如图6-3所示对话框。 (2)在图6-3中,点击“系统DSN”-“添加”,弹出如图6-4所示的对话框,在图6-4中选定“Microsoft Access Driver(*.mdb)”后点击“完成”弹出图6-5所示对话框。 (3)在图6-5中输入数据源“acc”,点击“选择”弹出如图6-6所示的对话框。 (4)在图6-6中选定Access数据库stu.mdb后点击“确定”返回到上一层对话框,继续点击“确定”完成对Access的配置。,2019年7月21日,19,2019年7月21日,20,2019年7月21日,21,3. 编写JSP文件访问数据库(stuInfo.jsp) 【例6-1】使用数据源访问Access数据库的JSP页面(stuInfo.jsp) 通过桥访问Access应用实例 学院 专业 学号 姓名 性别 年龄 宿舍 电话 籍贯 ,2019年7月21日,22,2019年7月21日,23,2019年7月21日,24,2019年7月21日,25,JDBCODBC桥访问Access数据库分析,加载驱动程序。在JDBC连接到ODBC数据库之前,必须加载JDBCODBC桥驱动程序,代码为: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“) 加载JDBCODBC桥驱动程序程序后,就可以连接数据库了。首先要创建Connection类的一个实例,并使用DriverManager(java.sql包)方法的getConnection来测试使用url指定的数据库连接。 连接到数据库后就可以访问数据库了。先使用Connection类对象的createStatement方法从指定的数据库连接得到一个Statement的实例,然后使用这个实例的executeQuery()方法来执行SQL语句。 对数据库的访问结束之后,及时的关闭相应对象,从而释放所占的资源。,2019年7月21日,26,6.2 通过JDBC-ODBC桥访问数据库,6.2.1 通过桥访问Access及其应用实例 6.2.2 通过桥访问Excel及其应用实例 6.2.3 通过桥访问Microsoft SQL Server 2008及其应用实例,2019年7月21日,27,2019年7月21日,28,1. 创建Excel文件 使用Office中的Excel应用程序,创建一个名为“软件技术专业成绩.xls”电子表格。Excel电子表格中的命名以及数据如图6-8所示。,2019年7月21日,29,2019年7月21日,30,2.配置Excel数据源 通过JDBC-ODBC桥的方式访问Excel工作表中的数据,首先要创建Excel数据源,这与创建Access数据源方法非常相似,只是在“创建新数据源对话框”选择“Microsoft Excel Driver(*.xls)”选项,然后在“ODBC Microsoft Excel安装”窗口选择“软件技术专业成绩.xls”工作表即可,这里不再介绍。,2019年7月21日,31,3. 编写JSP文件访问Excel(stuScore.jsp) 【例6-2】使用数据源访问Excel电子表格的JSP页面(stuScore.jsp) 通过桥访问Excel应用实例 专业 学号 姓名 班级 英语 国学(论语) 高数 Java JSP 计算机网络 Java项目实训 JSP项目实训 ,2019年7月21日,32,2019年7月21日,33,2019年7月21日,34,2019年7月21日,35,2019年7月21日,36,6.2 通过JDBC-ODBC桥访问数据库,6.2.1 通过桥访问Access及其应用实例 6.2.2 通过桥访问Excel及其应用实例 6.2.3 通过桥访问Microsoft SQL Server 2008及其应用实例,2019年7月21日,37,1. 创建表 本例中使用SQL Server 2008建一个student数据库,并在该数据库中创建一个info表,数据库、表以及表的字段如图6-10所示。表的数据如图6-11所示。,2019年7月21日,38,2019年7月21日,39,2019年7月21日,40,2. 配置Microsoft SQL Server 2008数据源,2019年7月21日,41,2019年7月21日,42,2019年7月21日,43,2019年7月21日,44,2019年7月21日,45,2019年7月21日,46,2019年7月21日,47,3. 编写JSP文件访问Microsoft SQL Server 2008(ODBCSQLServer.jsp) 【例6-3】使用数据源访问SQL Server 2008的JSP页面(ODBCSQLServer.jsp) 通过数据源访问SQL Server2008 通过数据源访问SQL Server 2008数据库 ,2019年7月21日,48, 学号 姓名 性别 年龄 体重 ,2019年7月21日,49,2019年7月21日,50,2019年7月21日,51,第6章 JSP中基本数据库操作,6.1 JDBC基础知识 6.2 通过JDBC-ODBC桥访问数据库 6.3 通过JDBC驱动访问数据库 6.4 查询数据库及其应用实例 6.5 更新数据库(增、删、改)及其应用实例 6.6 JSP在数据库应用中的相关问题 6.7 学生信息管理系统应用实例 6.8 常见问题及解决方案,2019年7月21日,52,6.3 通过JDBC驱动访问数据库,6.3.1 访问MySQL数据库及其应用实例 6.3.2 访问Microsoft SQL Server 2000数据库及其应用实例 6.3.3 访问Microsoft SQL Server 2008数据库及其应用实例,2019年7月21日,53,前面介绍了如何使用JDBCODBC连接Access数据库,使用JDBCODBC还可以连接SQL Server数据库。其实有很多数据库提供商提供了数据库的JDBC驱动程序,可以直接访问数据库,例如,微软提供了JDBC直接连接SQL Server数据库JDBC驱动程序sqlserver driver for jdbc,使得可以直接使用JDBC访问SQL Server数据库。,2019年7月21日,54,1. MySQL JDBC驱动下载和配置 本教程使用的是MySQL 5.0,下载支持5.0版本的JDBC驱动。本教程使用的JDBC驱动是mysql-connector-java-5.0.6-bin.jar。下载完成MySQL的JDBC驱动后,把该文件可以放到任意目录下,这里假设该目录是“D:JSP程序设计与项目实训教程ch06”。然后设置ClassPath 以保证Web服务器能够访问到这个驱动程序。设置方法如下: (1)依次进入“我的电脑”-“系统”-“设置环境变量”, 如果已经有ClassPath变量就编辑该变量的值,否则增加ClassPath变量。 (2)设置ClassPath的值为: “.; D:JSP程序设计与项目实训教程ch06mysql-connector-java-5.0.6-bin.jar”。 (3)重新启动服务器即可。,2019年7月21日,55,(1)MySQL的JDBC驱动在NetBeans中的配置 在NetBeans项目“ch06”上右单击,如图6-20所示,单击“属性”弹出对话框,在对话框中选择“库”-“添加JAR/文件夹(F)”,找到MySQL JDBC驱动所在位置,如图6-21所示。找到驱动位置后点击“打开”,MySQL JDBC驱动配置完成。,2019年7月21日,56,2019年7月21日,57,2019年7月21日,58,(2)MySQL的JDBC驱动在MyEclipse中的配置 在MyEclipse项目“ch06”上右单击,在属性菜单中单击“Build Path”-“Configure Build Path ”,如图6-22所示。单击“Configure Build Path ”,弹出对话框如图6-23,在对话框中选择卡“Libraries”-“Add External JARS”,找到MySQL JDBC驱动所在位置,如图6-24所示。找到驱动位置后点击“打开”,MySQL JDBC驱动在MyEclipse中配置完成。,2019年7月21日,59,2019年7月21日,60,2019年7月21日,61,2019年7月21日,62,2. MySQL建立数据库和表,2019年7月21日,63,3.编写JSP文件访问数据库(accessMySQL.jsp) 通过MySQL的JDBC驱动访问数据库 使用MySQL的JDBC驱动访问MySQL数据库 学号 姓名 专业 ,2019年7月21日,64,2019年7月21日,65,2019年7月21日,66,2019年7月21日,67,6.3 通过JDBC驱动访问数据库,6.3.1 访问MySQL数据库及其应用实例 6.3.2 访问Microsoft SQL Server 2000数据库及其应用实例 6.3.3 访问Microsoft SQL Server 2008数据库及其应用实例,2019年7月21日,68,1.Microsoft SQL Server JDBC驱动下载和配置,2019年7月21日,69,2019年7月21日,70,(安装) 复制Microsoft SQL Server 2000 Driver forJDBCLib下面的jar包到服务器commonlib,2019年7月21日,71,2. Microsoft SQL Server建立数据库和表 本例使用了 SQL Server2000自带的pubs数据库,将其设置为Windows和SQL混合模式登录,用户名字为sa,密码为空。,2019年7月21日,72,2019年7月21日,73,登录模式和sa设置步骤为: (1)点击属性 点击“开始”-“所有程序”-“Microsoft SQL Server”-“企业管理器”-“(local)(Windows NT)”-“属性”,如图6-29所示。 (2)设置混合登录模式 在图6-29中,在“身份验证”中选择“SQL Server和Windows【s】”。,2019年7月21日,74,(3)添加系统管理员sa sa是SQL Server默认的数据库管理员用户名。在图6-29企业器属性结构中,选择“安全性”- “登录”-“新建登录”,如图6-30所示。点击“新建登录”后弹出如图6-31所示对话框,在该对话框中输入用户名为“sa”,身份验证选择“SQL Server身份验证”,为用户输入密码,选择要操作的数据库名“pubs”。 (4)设置其它选项卡 在图6-31 “服务器角色”选项卡中,选择数据库管理员身份“System Administrators”,如图6-32所示。 在图6-31“数据库访问”选项卡中,选择要访问的数据库名,并指定对该数据库所允许的操作,public是公共操作,db_owner是数据库所有者能够进行的操作,如图6-33所示。,2019年7月21日,75,2019年7月21日,76,2019年7月21日,77,2019年7月21日,78,2019年7月21日,79,3.编写JSP文件访问数据库(accessSQLServer.jsp) 【例6-5】使用驱动访问SQL Server 2000的JSP页面(accessSQLServer.jsp) 通过SQL Server的JDBC驱动访问数据库 欢迎使用SQL Server的JDBC驱动访问SQL Server数据库 ,2019年7月21日,80, job_id job_desc min_lvl max_lvl ,2019年7月21日,81,2019年7月21日,82,2019年7月21日,83,6.3 通过JDBC驱动访问数据库,6.3.1 访问MySQL数据库及其应用实例 6.3.2 访问Microsoft SQL Server 2000数据库及其应用实例 6.3.3 访问Microsoft SQL Server 2008数据库及其应用实例,2019年7月21日,84,1. Microsoft SQL Server JDBC驱动下载和配置 如果数据库使用的Microsoft SQL Server 2008,在Microsoft网站下载Microsoft JDBC Driver 4.0 for SQL Server。下载后进行解压,解压后如图6-35所示有2个JAR包。设置ClassPath以保证Web服务器能够访问到这个驱动程序。设置方法如下: (1)依次进入“我的电脑”-“系统”-“设置环境变量”, 如果已经有ClassPath变量就编辑该变量的值,否则增加ClassPath变量; (2)设置ClassPath的值为: “.; D:JSP程序设计与项目实训教程ch06Microsoft JDBC Driver 4.0 for SQL Serversqljdbc_4.0chs sqljdbc4.jar”。只使用图6-35中的sqljdbc4.jar文件,sqljdbc.jar文件不使用,所以不需要配置。 (3)重新启动服务器即可。,2019年7月21日,85,2019年7月21日,86,如果开发Java Web项目使用的是NetBeans、MyEclipse和Eclipse。加载JDBC驱动和加载MySQL的驱动相似,不过在使用Microsoft JDBC Driver 4.0 for SQL Server驱动时,需要sqljdbc4.jar文件,如图6-36所示。,2019年7月21日,87,2019年7月21日,88,2. Microsoft SQL Server 2008建立数据库和表 使用的数据库、表以及数据如图6-10、图6-11所示。 登录模式和sa设置步骤为:,2019年7月21日,89,2019年7月21日,90,2019年7月21日,91,2019年7月21日,92,2019年7月21日,93,2019年7月21日,94,2019年7月21日,95,3. 编写JSP文件访问数据库(accessSQLServer2008.jsp) 【例6-6】使用驱动访问SQL Server 2008的JSP页面(accessSQLServer2008.jsp) 通过JDBC驱动访问SQL Server 2008 使用JDBC驱动访问SQL Server 2008数据库 ,2019年7月21日,96, 学号 姓名 性别 年龄 体重 ,2019年7月21日,97,2019年7月21日,98,2019年7月21日,99,第6章 JSP中基本数据库操作,6.1 JDBC基础知识 6.2 通过JDBC-ODBC桥访问数据库 6.3 通过JDBC驱动访问数据库 6.4 查询数据库及其应用实例 6.5 更新数据库(增、删、改)及其应用实例 6.6 JSP在数据库应用中的相关问题 6.7 学生信息管理系统应用实例 6.8 常见问题及解决方案,2019年7月21日,100,6.4 查询数据库及其应用实例,SQL的查询语句 JSP发送执行查询语句,2019年7月21日,101,SQL的查询语句,在查询数据库中的记录时,都是通过标准的SQL语句来实现的。SQL的查询语句即SELECT语句,是SQL语言的核心,其语法格式为: SELECT ALL | DISTINCT column1,column2 FROM table1,table2 WHERE “conditions“ GROUP BY “column-list“ HAVING “conditions ORDER BY “column-list“ ASC | DESC 其中,column1,column2为要查询的列名。table1,table2用来指定要查询的表的名称。WHERE “conditions”用来指定用于限制返回的结果的搜索条件。HAVING “conditions用来指定组或聚合的搜索条件。 ORDER BY ”column-list“ ASC | DESC 用来指定结果集的排序。 例如: SELECT id,name FROM stu_info WHERE (age20) ORDER BY id DESC,2019年7月21日,102,JSP发送执行查询语句,JDBC提供了三种接口来实现SQL语句的发送执行,它们分别是Statement、PreparedStatement和CallableStatement。PreparedStatement继承了Statement,而CallableStatement又从PreparedStatement继承而来。 它们用于执行不同的SQL语句:Statement接口的对象用于执行简单的不带参数的SQL语句;PreparedStatement接口的对象用于执行带有IN类型参数的预编译过的SQL语句;而CallableStament接口的对象用于执行一个数据库的存储过程。,2019年7月21日,103,1.Statement类 Statement stmt=connection.creatStatement(int type,int concurrency); Type参数: ResultSet.TYPE_INSENSITIVE游标上下滚动,数据库变化时,当前结果集不变。 ResultSet.TYPE_SENSITIVE游标上下滚动,数据库变化时,当前结果集随着变化。 Concurrency参数: ResultSet.CONCUR_READ_ONLY不能用结果集更新数据库中的表。 ResultSet.CONCUR_READ_UPDATETABLE可用结果集更新数据库中的表。,2019年7月21日,104,Statement类还提供了一些操作结果集的方法,表6-1列出利用Statement类创建对象的一些常用方法。,2019年7月21日,105,2.PreparedStatement类 PreparedStatement类可以将SQL语句传给数据库做预编译处理,即在执行的SQL语句中包含一个或多个IN参数,可以通过设置IN参数值多次执行SQL语句,不必重新给出SQL 语句,这样可以大大提高执行SQL语句的速度。 所谓IN参数就是指那些在SQL语句创立时尚未指定值的参数,在SQL语句中IN参数用“?”号代替。例如: PreparedStatement pstmt=connection.preparedStatement(“SELECT * FROM student WHERE年龄=? AND性别=? “);,2019年7月21日,106,【例6-7】利用PreparedStatement对象查询info表信息(PreparedStatementSQL.jsp),2019年7月21日,107, PreparedStatement类的使用 使用PreparedStatement类访问SQL Server 2008 ,2019年7月21日,108, 学号 姓名 性别 年龄 体重 ,2019年7月21日,109,=? and studentAge,2019年7月21日,110,2019年7月21日,111,2019年7月21日,112,3.ResultSet的方法 可以通过ResultSet对象的方法在结果集中进行滚动查询。常用滚动查询的方法见表6-2。,2019年7月21日,113,2019年7月21日,114,【例6-8】ResultSet对象的游标滚动(ResultSetSQL.jsp) ResultSet方法使用 使用ResultSet方法访问SQL Server 2008 ,2019年7月21日,115, 学号 姓名 性别 年龄 体重 ,2019年7月21日,116,2019年7月21日,117,2019年7月21日,118,2019年7月21日,119,第6章 JSP中基本数据库操作,6.1 JDBC基础知识 6.2 通过JDBC-ODBC桥访问数据库 6.3 通过JDBC驱动访问数据库 6.4 查询数据库及其应用实例 6.5 更新数据库(增、删、改)及其应用实例 6.6 JSP在数据库应用中的相关问题 6.7 学生信息管理系统应用实例 6.8 常见问题及解决方案,2019年7月21日,120,6.5 更新数据库(增、删、改)及其应用实例,SQL的更新语句 JSP发送执行更新语句,2019年7月21日,121,SQL的更新语句,SQL语言中使用UPDATE语句来更新表中的现有数据。其语法格式为: UPDATE table_name SET column_name =expression,column_name1 =expression WHERE search_condition 其中,table_name:用来指定需要更新的表的名称。如果该表不在当前服务器或数据库中,或不为当前用户所有,这个名称可用链接服务器、数据库和所有者名称来限定。 SET column_name =expression,column_name1 =expression:指定要更新的列或变量名称的列表,column_name指定含有要更改数据的列的名称。 WHERE search_condition:指定条件来限定所更新的行。根据所使用的WHERE子句的形式,有两种更新形式:一种是搜索更新指定搜索条件来限定要删除的行;另一种是定位更新使用CURRENT OF子句指定游标,更新操作发生在游标的当前位置。,2019年7月21日,122,JSP发送执行更新语句,Statement类提供的executeUpdate()方法执行INSERT、UPDATE或DELETE语句以及SQL DDL(数据定义语言)语句。 INSERT、UPDATE或DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate()的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATE TABLE或DROP TABLE等不操作行的语句,executeUpdate()的返回值总为零。 executeUpdate()方法和执行SELECT声明的executeQuery()方法相似,但是它不返回一个ResultSet,而是返回受到INSERT、UPDATE、或者DELETE操作影响的行数。,2019年7月21日,123,将stu_info表中姓名为“张江伟”的同学性别改为“M”。 Statement stmt=con.createStatement(); stmt.excuteUpdate(“UPDATE stu_info SET sex=男 WHERE name=张江伟”); stmt.close(); 或者 String sql=“UPDATE stu_info SET sex=M WHERE name=张江伟”; stmt.excuteUpdate(sql); stmt.close();,2019年7月21日,124,添加记录,SQL的插入语句 发送执行插入语句,2019年7月21日,125,SQL的插入语句,在SQL语言中,使用INSERT语句将新行添加到表或视图中。INSERT语句的语法格式为: INSERT INTO table_name column_list VALUES ( DEFAULT | NULL | expression ,.n ) table_name:指定将要插入数据的表或table变量的名称。 column_list:要在其中插入数据的一列或多列的列表。必须用圆括号将 column_list 括起来,并且用逗号进行分隔。 VALUES ( DEFAULT | NULL | expression ,.n ):引入要插入的数据值的列表。对于 column_list(如果已指定)中或者表中的每个列,都必须有一个数据值,且必须用圆括号将值列表括起来。如 VALUES列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用column_list明确地指定存储每个传入值的列。 例: INSERT INTO stu_info(id,name,sex,age,weight) VALUES(16,马欢,M,26,70),2019年7月21日,126,发送执行插入语句,JSP中,和更新记录一样,可以使用executeUpdate()方法来发送执行插入语句。,2019年7月21日,127,例: Statement stmt=con.createStatement(); String sql=“INSERT INTO stu_info(id,name,sex,age,weight VALUES(16,马欢,M,26,70)”; stmt.excuteUpdate(sql); stmt.close();,2019年7月21日,128,删除记录,SQL的删除语句 JSP发送执行删除语句,2019年7月21日,129,SQL的删除语句,在SQL语言中,使用DELETE语句删除数据表中的行。DELETE语句的语法格式为: DELETE FROM table_name WHERE search_condition table_name:用来指定从中删除记录的表的名称。 WHERE:用来指定用于限制删除行数的条件。如果没有提供 WHERE子句,则DELETE删除表中的所有行。 例如,要从stu_info表中删除学号为“4”的学生的记录,则SQL语句为: DELETE FROM stu_info WHERE id=4,2019年7月21日,130,JSP发送执行删除语句,JSP中,删除语句的发送和执行也是通过executeUpdate()方法来实现的,其实现方法和更新语句、插入语句相同。例如实现从stu_info表中删除学号为“4”的学生的记录的JSP代码为: Statement stmt = conn.createStatement(); String sql=“ DELETE FROM stu_info WHERE id=4“ stmt.executeUpdate(sql); stmt.close();,2019年7月21日,131,4. 应用实例 更新数据库实例。本例使用SQL Server 2008数据库,数据库、表以及表中记录参考图6-10和图6-11。程序有一个添加学生信息页面(input.jsp),如图6-47所示。 在图6-47中输入信息。点击“提交”后请求提交到inputcheck.jsp页面处理数据,inputCheck.jsp页面中实现了对数据的添加、更改和删除操作。运行效果如图6-48所示。,2019年7月21日,132,2019年7月21日,133,2019年7月21日,134,【例6-9】添加学生信息页面(inputcheck.jsp) JSP中更新数据库 输入要添加学生的信息 ,2019年7月21日,135, 学号 姓名 性别 年龄 体重 ,2019年7月21日,136,2019年7月21日,137,【例6-10】处理数据页面(inputCheck.jsp) 数据更新后的页面 已添加学生信息 ,2019年7月21日,138,% String studentNumber=request.getParameter(“studentNumber“); byte b=studentNumber.getBytes(“ISO-8859-1“); studentNumber=new String(b,“UTF-8“); String studentName=request.getParameter(“studentName“); byte b1=studentName.getBytes(“ISO-8859-1“); studentName=new String(b1,“UTF-8“); String studentSex=request.getParameter(“studentSex“); byte b2=studentSex.getBytes(“ISO-8859-1“); studentSex=new String(b2,“UTF-8“); String studentAge=request.getParameter(“studentAge“); byte b3=studentAge.getBytes(“ISO-8859-1“); studentAge=new String(b3,“UTF-8“); String studentWeight=request.getParameter(“studentWeight“); byte b4=studentWeight.getBytes(“ISO-8859-1“); studentWeight=new String(b4,“UTF-8“);,2019年7月21日,139,Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“); String url=“jdbc:sqlserver:/localhost:1433;databasename=student“; String user=“sa“; String password=“root“; Connection conn= DriverManager.getConnection(url,user,password); Statement stmt=conn.createStatement(); String sql=“insert into info values(“+studentNumber+“,“+studentName+“,“+studentSex+“,“+ studentAge+“,“+studentWeight+“)“; stmt.executeUpdate(sql) ; stmt.close(); conn.close(); %,2019年7月21日,140,已更改学生信息 ,2019年7月21日,141,已删除学生信息 ,2019年7月21日,142,经过以上操作后,数据库中有以下记录 学号 姓名 性别 年龄 体重 ,2019年7月21日,143,2019年7月21日,144,2019年7月21日,145,2019年7月21日,146,第6章 JSP中基本数据库操作,6.1 JDBC基础知识 6.2 通过JDBC-ODBC桥访问数据库 6.3 通过JDBC驱动访问数据库 6.4 查询数据库及其应用实例 6.5 更新数据库(增、删、改)及其应用实例 6.6 JSP在数据库应用中的相关问题 6.7 学生信息管理系统应用实例 6.8 常见问题及解决方案,2019年7月21日,147,6.6 JSP在数据库应用中的相关问题,6.6.1 JSP的分页技术及其应用实例 6.6.2 汉字处理,2019年7月21日,148,6.6.1 JSP的分页技术及其应用实例,在实际应用中,如果从数据库中查询得到的记录特别多,甚至超过了显示器屏幕范围,这时可将结果分页显示。本例使用的数据库以及表是上一节使用的student数据库和info表。 假设总记录数为intRowCount,每页显示记录的数量为intPageSize,总页数为intPageCount,那么总页数的计算公式为: 如果(intRowCount % intPageSize)0,则intPageCount= intRowCount / intPageSize+1。 如果(intRowCount % intPageSize)=0,则intPageCount= intRowCount / intPageSize。 翻页后显示第intPage页的内容,将记录指针移动到(intPage-1)*intPageSize+1。,2019年7月21日,149,2019年7月21日,150,【例6-11】分页显示实例(pageBreak.jsp) 分页浏览记录 分页显示记录内容 学号 姓名 性别 年龄 体重 ,2019年7月21日,151,% Class.forName( “com.microsoft.sqlserver.jdbc.SQLServerDriver“); String url=“jdbc:sqlserver:/localhost:1433;databasename= student“; String user=“sa“; String password=“root“; Connection conn= DriverManager.getConnection(url,user,password); int intPageSize; /一页显示的记录数 int intRowCount; /记录总数 int intPageCount; /总页数 int intPage; /待显示页码 String strPage; int i; intPageSize =2; /设置一页显示的记录数 strPage = request.getParameter(“page“); /取得待显示页码,2019年7月21日,152,if(strPage=null) /*表明在QueryString中没有page这一个参数,此时显示第一页数据*/ intPage = 1; else /将字符串转换成整型 intPage = java.lang.Integer.parseInt(strPage); if(intPage1) intPage=1; Statement stmt=conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); String sql=“select * from info“; ResultSet rs=stmt.executeQuery(sql); rs.last(); /光标指向查询结果集中最后一条记录 intRowCount = rs.getRow(); /获取记录总数,2019年7月21日,153,/记算总页数 intPageCount = (intRo

温馨提示

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

评论

0/150

提交评论