《项目3用户管理-4访问数据库.ppt》由会员分享,可在线阅读,更多相关《项目3用户管理-4访问数据库.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LOGOJava Web 程序设计程序设计JAVA WEB应用开发应用开发项目三项目三 用户管理(用户管理(JSP)Java Web 应用开发应用开发工作任务工作任务v任务一 掌握JSP编程技能任务1-1 JSP结构;任务1-2 JSP注释;任务1-3 JSP指令标签任务1-4 JSP动作标签任务1-5 JSP内置对象任务1-6 JSP访问数据库任务1-7 页面排错;v任务二 数据表设计v任务三 普通用户注册v任务四 普通用户登录v任务五 查询、删除用户信息2Java Web 应用开发应用开发复习复习vJSP基本结构pHTML元素p脚本元素p声明变量、方法、类 pJava程序片 pJava表达
2、式 pJSP标签p指令标签 pp编译时包含,静态文件 可以包含jsp html txt Java程序片p动作标签 带参数 用一对,不带参数,用一个pinclude 运行时包含,静态和动态文件,对动态文件可以产生servlet.java文件 可以包含 jsp html txt Java程序片pparam 参数pforward 页面跳转p注释phtml注释pJSP注释pJava注释Java Web 应用开发应用开发复习复习vJSP内置对象request:封装客户端的请求信息。一般获取表单参数String getParameter(String name)String getParameterVal
3、ues(String name)/复选项response:响应客户请求的有关信息sendRedirect(URL url)/重定向与的区别session:客户端与服务器的一次会话out:向客户端输出内容application:实现了用户间数据的共享,可存放全局变量。Java Web 应用开发应用开发任务任务1-6 JSP访问数据库访问数据库v项目介绍v相关知识了解JDBC和驱动程序掌握JDBC处理数据库的方法能够熟练操作数据库中的数据掌握增删改操作掌握查询操作和结果集的处理v学习重点不同数据库的访问操作查询结果的处理v任务实施连接数据库增删改查操作查询结果的处理v任务总结Java Web 应用
4、开发应用开发常用常用SQL语句语句(1)v创建表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);Java Web 应用开发应用开发常用常用SQL语句语句(2)v插入数据当一个表新建成时,它里面没有数据,通过向表中插入数据,建成表的实例。语句句法:INSERT INTO 表名(列名1,)VALUES(值1,值2,,值n)子查询;将新学生“何聪”增加到Student表中,
5、并按照表的结构将信息添加完整,需要如下语句:INSERT INTO STUDENT VALUES(020005,聪,何,1982-2-23,M);Java Web 应用开发应用开发常用常用SQL语句语句(3)v修改数据对表中已有数据进行修改,语句句法:UPDATE 表名 SET 列名1表达式1,列名2表达式2,WHERE 条件;例如,还是对表9-1:将学号为020101的名字改为宇飞,应该执行以下语句:UPDATE STUDENT SET firstname=宇文 WHERE StudentNO=020101;Java Web 应用开发应用开发常用常用SQL语句语句(4)v删除数据 删除表中已
6、经存在的数据,注意:不能删除不存在的数据。语句句法:DELETE FROM 表名 WHERE 条件;例如:对Student表进行删除,要删除其中学号为021900的学生;DELETE FROM STUDENT WHERE Studentno021900;Java Web 应用开发应用开发常用常用SQL语句语句(5)v查询语句1.查询学号为021900的学生:SELECT*FROM STUDENT WHERE StudentNo=021900;2.查询所有姓名以A开头的学生的姓名;SELECT STUDENT.FirstName,STUDENT.LastName FROM STUDENT WHE
7、RE LastName LIKE A%;3.将所有学生按学号顺序降序排列;SELECT*FROM STUDENT ORDER BY StudentNo DESC;4.将所有学生按学号顺序升序排列;SELECT*FROM STUDENT ORDER BY StudentNo ASC;Java Web 应用开发应用开发一、一、JDBC概述概述vJava DataBase Connectivity 数据库连接数据库连接vJDBC是一种规范,由一组用Java语言编写的类与接口组成。相关的类在java.sql包。vJDBC提供了各个数据库厂商为Java程序员提供标准的数据库访问类和接口,使Java开发独
8、立于DBMS。不必在不同的平台上编写不同的程序 vJDBC是通过实现针对每个特定数据库的JDBC接口,即驱动程序(Driver)来实现对不同关系型数据库的操作。Java Web 应用开发应用开发JDBC概述概述Java应用程序JDBC APIJDBC驱动程序管理器JDBC驱动程序JDBC驱动程序JDBC驱动程序数据库数据库数据库Java Web 应用开发应用开发JDBC访问数据库步骤访问数据库步骤v连接到数据库 不同的数据库:Access,MySQL小型企业50100人;SQL Server 中小型企业 1001000人 DB2、Oracle大型企业 不同的连接方式v向数据库发送执行查询或更新
9、操作的SQL语句 查询,插入,删除,更新,创建语句。v从数据库接受结果,处理这些结果。Java Web 应用开发应用开发数据库连接技术数据库连接技术vJDBCODBC桥接桥接安装安装ODBC驱动驱动vJava部分本机驱动v网络纯Java驱动v纯粹的纯粹的Java驱动驱动比较实用比较实用Java Web 应用开发应用开发二、使用二、使用JDBC的基本步骤的基本步骤导入必需的类导入必需的类 import java.sql.*;加载并注册数据库驱动加载并注册数据库驱动识别数据源 Class.forName(“”);建立连接建立连接(Connection对象使用DriverManager类的方法get
10、Connection返回)创建执行对象(Statement对象调用Connection对象的方法creatStatement返回)访问数据库访问数据库使用Statement对象的方法executeQuery和executeUpdate执行增加、删除、修改、查询处理查询结果处理查询结果从返回的ResultSet对象中获取数据关闭连接关闭连接Java Web 应用开发应用开发JDBC的使用的使用v涉及到JDBC的工作都是从类DriverManager开始的DriverManager创建Connection创建Statement创建ResultSet驱动程序驱动程序SQL数据建立数据库连接数据库数据
11、库Java Web 应用开发应用开发1加载注册数据库驱动v加载注册JDBC-ODBCClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);JDBC驱动Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);v其他的见文挡:常用 JDBC 驱动名字和 URL 列表Java Web 应用开发应用开发数据数据库名名驱动程序驱动程序数据数据库urlurlJAR包包Access或其他数据库sun.jdbc.odbc.JdbcOdbcDriverjdbc:odbc:dataSource无包,直接配置数据源
12、SQL Servercom.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserver:/hostname:portnumber;DatabaseName=dbnamemsbase.jar,mssqlserver.jar,msutil.jarMySQLcom.mysql.jdbc.Driver jdbc:mysql:/hostname/dbnameMssql-connector-java-5.1.5-bin.jarOrcacleoracle.jdbc.driver.OracleDriver jdbc:orcale:thin:
13、hostname:portnumber:dbnameNls_charset12.jar,classess12.jar连接到不同的数据库连接到不同的数据库Java Web 应用开发应用开发2 建立连接v建立连接 Connection con=DriverManager.getConnection(url,”,”);其中urlJDBC-ODBC String url=“jdbc:odbc:数据源的名字”;JDBC驱动 String url=“jdbc:microsoft:sqlserver:/localhost:1433;databaseName=数据源的名字”方法返回一个连接,或具体地说返回一个
14、对象con,它是实现了的接口,提供了一个创建和执行SQL命令的方法。Java Web 应用开发应用开发3 访问数据库v建立连接后,使用连接对象就能发送SQL语句。v有三种对象可以访问数据库Statement对象 Statement stmt=con.createStatement()stmt.executeQuery()/执行查询语句,返回ResultSet结果集stmt.executeUpdate()/执行增删改语句stmt.execute()/不知道要执行查询还是其他时使用PreparedStatement对象预编语句,用“?”代替相应位置,用setXxx方法设定所代表的值String s
15、ql=“select*from student where stu_sex=?”PreparedStatement pstmt=con.prepareStatement(sql)pstmt.setString(1,”f”)rs=pstmt.executeQurey()CallableStatement对象Java Web 应用开发应用开发Statement对象 vStatement stmt=con.createStatement();stmt.executeQuery()用于查询数据库。stmt.executeUpdate()/除查询之外的其他sql命令stmt.execute()/主要用在
16、如果不知道正要执行的SQL查询还是更新时,就可以利用这个方法 Java Web 应用开发应用开发Statement对象 vstmt.executeQuery()用于查询数据库。以SQL语句作参数,返回一个ResultSet对象格式的查询结果。Statement stmt=con.createStatement();String sql=”select*from employee”;ResultSet rs=stmt.executeQuery(query);使用rs.next()方法和getXXX()连续取得记录 Java Web 应用开发应用开发Statement对象stmt.executeU
17、pdate()/除查询之外的其他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,)”;stmt.executeUpdate(upSql);Java Web 应用开发应用开发Statement对象vstmt.execute()/主要用在如果不知道正要执行的SQL查询还是更新时,就可以利用这个
18、方法 v如果执行查询语句时,那么execute()会返回true;反之,则返回false。boolean flag=stmt.execute(sql);ResultSet rs=null;int rows=0;if(flag)rs=stmt.getResultSet();else rows=stmt.getUpdateCount();Java Web 应用开发应用开发PreparedStatement 对象 v继承Statement接口 预编对象 v预编语句中的SQL语句具有一个或多个参数,每个参数用”?”代替。每个问号的值必须在执行之前利用setXXX方法来设定它所代表的值 v创建Prepa
19、redStatement对象方法 String sql=SELECT*FROM student WHERE stu_sex=?;/?代表一个占位符合,它的值是待定的。PreparedStatement pstmt=conn.prepareStatement(sql);/下面的语句设置?的值/第一参数是?的索引位置/第二参数:把?的值设置成这个参数 pstmt.setString(1,“f);rs=pstmt.executeQuery();Java Web 应用开发应用开发PreparedStatement 对象v例子:String sql=INSERT INTO student(stu_nam
20、e,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();Java Web 应用开发应用开发4 通过ResultSet处理查询结果vResultSet对象是以统一形式列组织的数据行组成。用next()方法移动到下一数
21、据行。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)Java Web 应用开发应用开发JSP中对数据库的操作中对数据库的操作v
22、JSP中数据库的连接 JDBCODBC桥接JDBC驱动vJSP中对数据库的添加、修改、删除vJSP中对数据库的存储vJSP分页Java Web 应用开发应用开发数据库的连接数据库的连接JDBC-ODBC桥接桥接v创建数据库,新建数据表v设置ODBC数据源控制面板 管理工具 数据源(ODBC)选中系统DNS 添加 SQL Server 完成 设置数据源名称(程序中使用的名称,可以和数据库名称不一致)选择服务器名称(local)下一步登录方式(默认,或指定用户名和密码)选择数据源测试成功v编写JSP代码 测试是否成功Sqlcon1.jspJava Web 应用开发应用开发数据库的连接数据库的连接
23、JDBC驱动步骤驱动步骤v下载和安装SQL Server2000的SP4 注意:下载后双击是解压,解压之后要点击setup.batv下载SQLSERVER2000的jdbc驱动程序Window操作系统 v安装JDBC安装ms_JDBC_setup默认安装路径为:c:Program FilesMicrosoft SQL Server 2000 Driver for JDBC 安装目录lib下的三个jar文件即是JDBC驱动核心 msbase.jar mssqlserver.jar msutil.jar v将三个jar文件加入到环境 变量中拷贝到.Javajdk1.6.0_03jrelibext设
24、置环境变量ClassPath:.;C:Javajdk1.6.0lib;C:Javajre1.6.0libextmsbase.jar;C:Javajre1.6.0libextmsutil.jar;C:Javajre1.6.0libextmssqlserver.jar在项目中加入三个包 注意是物理拷贝,再添加,否则路径在不同电脑上有问题Sqlcon2.jspJava Web 应用开发应用开发数据库中中文处理数据库中中文处理v与内置对象中文处理类似v将要插入的汉字信息进行转换String s=“测试”;s=new String(s.getBytes(),”ISO-8859-1”);v取出的汉字信息进
25、行转换String str=rs.getString(1);Str=new String(str.getBytes(“ISO-8859-1”),”GB2312”);Java Web 应用开发应用开发课堂训练课堂训练v数据库的连接JDBCODBC桥接JDBC驱动vJava源文件JDBCODBCJDBC驱动数据库操作类 v在JSP页面中 JDBCODBCJDBC驱动使用数据库操作类 DBcon.java在JSP页面中访问数据库,代码的可维护性和可重用性比较低Java Web 应用开发应用开发数据库的处理数据库的处理v数据库的查询使用结果集合ResultSet对象v数据库的插入v数据库的删除v数据库
26、的修改Java Web 应用开发应用开发任务任务3-4 项目实施项目实施v普通用户注册普通用户注册数据表设普通用户注册表示层设计 register.jsp实体类设计 数据访问层设计控制层设计 普通用户登录表示层设计 login.jsp实体类设计 数据访问层设计控制层设计 查询、删除用户信息2023/5/3034Java Web 应用开发应用开发游动查询游动查询v处理结果集ResultSet对象维护一个指向当前记录的指针,使用next()方法移动指针,使用getXXX方法获取结果v游动查询要在结果集中前后移动或显示指定记录,则必须得到一个可滚动的结果集,则获取Statement对象的方法为:St
27、atement stmt=con.createStatement(int type,int concurrency);type,表示滚动方式,取值可以为:concurrency,表示是否可以用结果集更新数据库,取值为:vResultSet.TYPE_FORWARD_ONLY 只可向前滚动 vResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更 新,就是如果数 据库里的数据修改过,并不在ResultSet 中反应出来。vResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库的更新,以 便更改ResultSet中的数据 vRe
28、sultSet.CONCUR_READ_ONLY 缺省值,指定不可以更新 ResultSet vResultSet.CONCUR_UPDATABLE 指定可以更新 ResultSet Java Web 应用开发应用开发游动查询游动查询vResultSet常用方法: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指定的行号