项目3用户管理-4访问数据库.ppt

上传人:zhu****ei 文档编号:2908384 上传时间:2019-12-04 格式:PPT 页数:36 大小:2.84MB
返回 下载 相关 举报
项目3用户管理-4访问数据库.ppt_第1页
第1页 / 共36页
项目3用户管理-4访问数据库.ppt_第2页
第2页 / 共36页
项目3用户管理-4访问数据库.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
JAVA WEB应用开发,项目三 用户管理(JSP),工作任务,任务一 掌握JSP编程技能 任务1-1 JSP结构; 任务1-2 JSP注释; 任务1-3 JSP指令标签 任务1-4 JSP动作标签 任务1-5 JSP内置对象 任务1-6 JSP访问数据库 任务1-7 页面排错; 任务二 数据表设计 任务三 普通用户注册 任务四 普通用户登录 任务五 查询、删除用户信息,2,复习,JSP基本结构 HTML元素 脚本元素 声明变量、方法、类 Java程序片 Java表达式 JSP标签 指令标签 编译时包含,静态文件 可以包含jsp html txt Java程序片 动作标签 带参数 用一对,不带参数,用一个 include 运行时包含,静态和动态文件,对动态文件可以产生servlet.java文件 可以包含 jsp html txt Java程序片 param 参数 forward 页面跳转 注释 html注释 JSP注释 Java注释,复习,JSP内置对象 request:封装客户端的请求信息。 一般获取表单参数 String getParameter(String name) String getParameterValues(String name) /复选项 response:响应客户请求的有关信息 sendRedirect(URL url) /重定向 与的区别 session:客户端与服务器的一次会话 out: 向客户端输出内容 application: 实现了用户间数据的共享,可存放全局变量。,任务1-6 JSP访问数据库,项目介绍 相关知识 了解JDBC和驱动程序 掌握JDBC处理数据库的方法 能够熟练操作数据库中的数据 掌握增删改操作 掌握查询操作和结果集的处理 学习重点 不同数据库的访问操作 查询结果的处理 任务实施 连接数据库 增删改查操作 查询结果的处理 任务总结,常用SQL语句(1),创建表 CREATE TABLE STUDENT( studentno CHAR(8) NOT NULL, firstname CHAR(10) NOT NULL, lastname CHAR(10) NOT NULL, birthday DATE,gender CHAR(1) DEFAULT M );,常用SQL语句(2),插入数据 当一个表新建成时,它里面没有数据,通过向表中插入数据,建成表的实例。 语句句法: INSERT INTO 表名(列名1,) VALUES(值1,值2,,值n) 子查询; 将新学生“何聪”增加到Student表中,并按照表的结构将信息添加完整,需要如下语句: INSERT INTO STUDENT VALUES(020005, 聪,何,1982-2-23,M);,常用SQL语句(3),修改数据 对表中已有数据进行修改,语句句法: UPDATE 表名 SET 列名1表达式1,列名2表达式2, WHERE 条件; 例如,还是对表9-1: 将学号为020101的名字改为宇飞,应该执行以下语句: UPDATE STUDENT SET firstname=宇文 WHERE StudentNO=020101;,常用SQL语句(4),删除数据 删除表中已经存在的数据,注意:不能删除不存在的数据。语句句法: DELETE FROM 表名 WHERE 条件; 例如:对Student表进行删除,要删除其中学号为021900的学生; DELETE FROM STUDENT WHERE Studentno021900;,常用SQL语句(5),查询语句 1.查询学号为021900的学生: SELECT * FROM STUDENT WHERE StudentNo=021900; 2.查询所有姓名以A开头的学生的姓名; SELECT STUDENT.FirstName, STUDENT.LastName FROM STUDENT WHERE LastName LIKE A%; 3.将所有学生按学号顺序降序排列; SELECT * FROM STUDENT ORDER BY StudentNo DESC; 4.将所有学生按学号顺序升序排列; SELECT * FROM STUDENT ORDER BY StudentNo ASC;,一、JDBC概述,Java DataBase Connectivity 数据库连接 JDBC是一种规范,由一组用Java语言编写的类与接口组成。相关的类在java.sql包。 JDBC提供了各个数据库厂商为Java程序员提供标准的数据库访问类和接口,使Java开发独立于DBMS。不必在不同的平台上编写不同的程序 JDBC是通过实现针对每个特定数据库的JDBC接口,即驱动程序(Driver)来实现对不同关系型数据库的操作。,JDBC概述,JDBC访问数据库步骤,连接到数据库 不同的数据库:Access,MySQL小型企业50100人; SQL Server 中小型企业 1001000人 DB2、Oracle大型企业 不同的连接方式 向数据库发送执行查询或更新操作的SQL语句 查询,插入,删除,更新,创建语句。 从数据库接受结果,处理这些结果。,数据库连接技术,JDBCODBC桥接 安装ODBC驱动 Java部分本机驱动 网络纯Java驱动 纯粹的Java驱动 比较实用,二、使用JDBC的基本步骤,导入必需的类 import java.sql.*; 加载并注册数据库驱动 识别数据源 Class.forName(“”); 建立连接 (Connection对象使用DriverManager类的方法getConnection返回) 创建执行对象(Statement对象调用Connection对象的方法creatStatement返回) 访问数据库 使用Statement对象的方法executeQuery和execute Update执行增加、删除、修改、查询 处理查询结果 从返回的ResultSet对象中获取数据 关闭连接,JDBC的使用,涉及到JDBC的工作都是从类DriverManager开始的,1加载注册数据库驱动,加载注册 JDBC-ODBC Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); JDBC驱动 Class.forName( “com.microsoft.jdbc.sqlserver.SQLServerDriver“ ); 其他的见文挡:常用 JDBC 驱动名字和 URL 列表,连接到不同的数据库,2 建立连接,建立连接 Connection con=DriverManager.getConnection(url,” ” ,” ”); 其中url JDBC-ODBC String url=“jdbc:odbc:数据源的名字 ”; JDBC驱动 String url=“jdbc:microsoft:sqlserver:/localhost:1433; databaseName=数据源的名字” 方法返回一个连接,或具体地说返回一个对象con,它是实现了Java.sql.Connection的接口,提供了一个创建和执行SQL命令的方法。,3 访问数据库,建立连接后,使用连接对象就能发送SQL语句。 有三种对象可以访问数据库 Statement对象 Statement stmt=con.createStatement() stmt.executeQuery() /执行查询语句,返回ResultSet结果集 stmt.executeUpdate() /执行增删改语句 stmt.execute() /不知道要执行查询还是其他时使用 PreparedStatement对象 预编语句,用“?”代替相应位置,用setXxx方法设定所代表的值 String sql=“select * from student where stu_sex=?” PreparedStatement pstmt=con.prepareStatement(sql) pstmt.setString(1,”f”) rs=pstmt.executeQurey() CallableStatement对象,Statement对象,Statement stmt=con.createStatement(); stmt.executeQuery() 用于查询数据库。 stmt.executeUpdate()/除查询之外的其他sql命令 stmt.execute()/主要用在如果不知道正要执行的SQL查询还是更新时,就可以利用这个方法,Statement对象,stmt.executeQuery() 用于查询数据库。以SQL语句作参数,返回一个ResultSet对象格式的查询结果。 Statement stmt=con.createStatement(); String sql=”select * from employee”; ResultSet rs=stmt.executeQuery(query); 使用rs.next()方法和getXXX()连续取得记录,Statement对象,stmt.executeUpdate()/除查询之外的其他sql命令。返回一个整数表示更新的数据笔数 。 Statement stmt=con.createStatement(); String upSql=”insert into employee(employee_id,last_name,first_name,birth,sex,email) values(null,sun,xiaohu,1982/12/25,M,ccit)”; stmt.executeUpdate(upSql);,Statement对象,stmt.execute()/主要用在如果不知道正要执行的SQL查询还是更新时,就可以利用这个方法 如果执行查询语句时,那么execute()会返回true;反之,则返回false。 boolean flag=stmt.execute(sql); ResultSet rs=null; int rows=0; if(flag) rs=stmt.getResultSet(); else rows=stmt.getUpdateCount(); ,PreparedStatement 对象,继承Statement接口 预编对象 预编语句中的SQL语句具有一个或多个参数,每个参数用”?”代替。每个问号的值必须在执行之前利用setXXX方法来设定它所代表的值 创建PreparedStatement对象方法 String sql = “SELECT * FROM student WHERE stu_sex=?“; /?代表一个占位符合,它的值是待定的。 PreparedStatement pstmt=conn.prepareStatement(sql); /下面的语句设置?的值 /第一参数是?的索引位置 /第二参数:把?的值设置成这个参数 pstmt.setString(1, “f“); rs=pstmt.executeQuery();,PreparedStatement 对象,例子: String sql = “INSERT INTO student(stu_name,stu_sex,stu_age,stu_desc,stu_grade) VALUES(?,?,?,?,?)“; pstmt=conn.prepareStatement(sql); pstmt.setString(1, “LILY“); pstmt.setString(2, “F“); pstmt.setInt(3, 23); pstmt.setString(4, “*“); pstmt.setString(5, “sd0702“); pstmt.executeUpdate();,4 通过ResultSet处理查询结果,ResultSet对象是以统一形式列组织的数据行组成。 用next()方法移动到下一数据行。 ResultSet对象可以使用getxxx方法获得字段值,将位置索引或字段名传递给getXXX方法的参数即可。 getInt(int columnIndex) getInt(String columnName) getString( int ColumIndex) getString(String columnName) getDouble(int columnIndex) getDouble(String columnName) getDate(int columnIndex) getDate(String columnName),JSP中对数据库的操作,JSP中数据库的连接 JDBCODBC桥接 JDBC驱动 JSP中对数据库的添加、修改、删除 JSP中对数据库的存储 JSP分页,数据库的连接JDBC-ODBC桥接,创建数据库,新建数据表 设置ODBC数据源 控制面板 管理工具 数据源(ODBC) 选中系统DNS 添加 SQL Server 完成 设置数据源名称(程序中使用的名称,可以和数据库名称不一致) 选择服务器名称(local) 下一步 登录方式 (默认,或指定用户名和密码) 选择数据源 测试成功 编写JSP代码 测试是否成功,Sqlcon1.jsp,数据库的连接 JDBC驱动步骤,下载和安装SQL Server2000的SP4 注意:下载后双击是解压,解压之后要点击setup.bat 下载SQLSERVER2000的jdbc驱动程序 Window操作系统 安装JDBC 安装ms_JDBC_setup默认安装路径为: c:Program FilesMicrosoft SQL Server 2000 Driver for JDBC 安装目录lib下的三个jar文件即是JDBC驱动核心 msbase.jar mssqlserver.jar msutil.jar 将三个jar文件加入到环境 变量中 拷贝到 Javajdk1.6.0_03jrelibext 设置环境变量ClassPath: .;C:Javajdk1.6.0lib;C:Javajre1.6.0libextmsbase.jar;C:Javajre1.6.0libextmsutil.jar;C:Javajre1.6.0libextmssqlserver.jar 在项目中加入三个包 注意是物理拷贝,再添加,否则路径在不同电脑上有问题,Sqlcon2.jsp,数据库中中文处理,与内置对象中文处理类似 将要插入的汉字信息进行转换 String s=“测试”; s=new String(s.getBytes(),”ISO-8859-1”); 取出的汉字信息进行转换 String str=rs.getString(1); Str=new String(str.getBytes(“ISO-8859-1”),”GB2312”);,课堂训练,数据库的连接 JDBCODBC桥接 JDBC驱动 Java源文件 JDBCODBC JDBC驱动 数据库操作类 在JSP页面中 JDBCODBC JDBC驱动 使用数据库操作类 DBcon.java 在JSP页面中访问数据库,代码的可维护性和可重用性比较低,数据库的处理,数据库的查询 使用结果集合ResultSet对象 数据库的插入 数据库的删除 数据库的修改,任务3-4 项目实施,普通用户注册 数据表设 普通用户注册 表示层设计 register.jsp 实体类设计 数据访问层设计 控制层设计 普通用户登录 表示层设计 login.jsp 实体类设计 数据访问层设计 控制层设计 查询、删除用户信息,2019/12/2,34,游动查询,处理结果集ResultSet对象维护一个指向当前记录的指针,使用next()方法移动指针,使用getXXX方法获取结果 游动查询 要在结果集中前后移动或显示指定记录,则必须得到一个可滚动的结果集,则获取Statement对象的方法为: Statement stmt=con.createStatement(int type,int concurrency); type,表示滚动方式,取值可以为: concurrency,表示是否可以用结果集更新数据库,取值为:,ResultSet.TYPE_FORWARD_ONLY 只可向前滚动 ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更 新,就是如果数 据库里的数据修改过,并不在ResultSet 中反应出来。 ResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库的更新,以 便更改ResultSet中的数据,ResultSet.CONCUR_READ_ONLY 缺省值,指定不可以更新 ResultSet ResultSet.CONCUR_UPDATABLE 指定可以更新 ResultSet,游动查询,ResultSet常用方法: boolean previous() 将游标向上移动 void beforeFirst() 移动到初始位置,第一行之前 void afterLast() 移动到最后一行之后 void first() 移动到第一行 void last() 移动到最后一行 boolean isAfterLast() 判断是否在最后一行之后 boolean isBeforeFirst() 判断是否在第一行之前 boolean ifFirst() 判断是否是第一行 boolean ifLast() 判断是否是最后一行 int getRow() 得到当前指向的行号,行号从1开始 boolean absolute(int row) 移动到参数row指定的行号,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!