24
第第第 JSP 第第第第第第第 南南南南南南南南南南南南南 西 南南南南南南JSP

第七章 JSP 中数据库的使用

  • Upload
    cerise

  • View
    73

  • Download
    5

Embed Size (px)

DESCRIPTION

西南科技大学网络教育系列课程 动态网页设计( JSP ). 第七章 JSP 中数据库的使用. 数据库应用开发简介. 作为有效的数据存储和组织管理工具,数据库的应用日益广泛. 目前主流的数据库产品有 Oracle 、 SQL Server 、 DB2 和 SyBase 等多种。 在数据库开发领域中,有三个方面需要掌握: SQL 语言、 ODBC 数据访问接口和 JDBC 数据库访问接口。. SQL 语言概述. - PowerPoint PPT Presentation

Citation preview

Page 1: 第七章  JSP 中数据库的使用

第七章 JSP中数据库的使用

西南科技大学网络教育系列课程动态网页设计( JSP)

Page 2: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

数据库应用开发简介

作为有效的数据存储和组织管理工具,数据库的应用日益广泛

目前主流的数据库产品有 Oracle 、 SQL Server 、 DB2 和 SyBase 等多种。

在数据库开发领域中,有三个方面需要掌握: SQL 语言、 ODBC 数据访问接口和 JDBC 数据库访问接口。

Page 3: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

SQL 语言概述

SQL ( Structured Query Language )是关系型数据库的标准语言,是由国际标准组织提出的,各种关系型数据库都支持SQL 指令, Oracle 在基本的 SQL 基础上进行了扩充。

SQL 集 DDL ( Data Definition Language :数据定义语言),DML ( Data Manipulation Language :数据操作语言)和 DCL ( Data Control Language :数据控制语言)于一体。用 SQL 语言可以实现数据库生命周期的全部活动。

SQL 语句有如下的两大特点( 1 ) SQL 是一种类似于英语的语言,很容易理解和书写。( 2 ) SQL 语言是非过程化的语言(第四代语言)。

Page 4: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

ODBC 数据访问接口

开放式数据库互连 ODBC( Open DataBase Connectivity )是微软公司开发的一套开发数据库系统应用程序接口规范,它支持应用程序以标准的 ODBC 函数和 SQL 语句操作各种不同的数据库。

Page 5: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

JDBC 数据访问接口

为支持 Java 程序的数据库操作功能, Java 语言采用了专门 Java 数据库编程接口( JDBC , Java DataBase Connectivity ),用于在Java 程序中实现数据库操作功能并简化操作过程。 JDBC 支持基本 SQL 语句,提供多样化的数据库连接方式,为各种不同的数据库提供统一的操作界面

Page 6: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

SQL 语句分类 SQL分类 描述

数据定义语言( DDL)

数据定义语言( DDL)用于定义、修改或者删除数据库对象,如 Create Table等

数据查询语言( DQL)

数据查询语句( Data Query Language, DQL)用于对数据进行检索。如最常用的 Select语句

数据操纵语言( DML)

数据操纵语言( DML)用于访问、建立或者操纵在数据库中已经存在数据,如 Select、 Insert、 Update和 Delete等等。

事务控制语言( TCL)

事务控制语言( Transact Control Language)管理 DML语句所做的修改,是否保存修改或者放弃修改。如: Commit、 Rollback、 Savepoint、 Set Transaction等命令。

数据控制语言( DCL)

数据控制语言( DCL)管理对数据库内对象的访问权限和授予和回收,如 Grant、 Revoke等等。

Page 7: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

基本 SQL 语句

基本的 SQL 语句包括 DQL 和 DML 。也就是对数据库最常用的四大基本操作:查询( Select )、插入( Insert )、更新( Update )和删除( Delete )

Page 8: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

查询语句

SELECT 字段名 FROM 数据表 WHERE 筛选条件

SELECT * FROM grade WHERE 数学 =80 or 语文 =90

SELECT * from userTable where user_age in {20,22,25}

SELECT * from userTable where user_name like ‘ 王 %’

SELECT * from userTable where user_name is null

Page 9: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

DML 的基本格式

( 1 ) DELETE 指令:删除数据记录。– 基本语法: DELETE FROM 数据表 WHERE 条件– 例: DELETE from grade WHERE 数学 =0

功能说明:删除所有数学成绩为零的记录,如果没有 WHERE 子句,则删除所有记录。

( 2 ) UPDATE 指令:更新数据记录。– 基本语法: UPDATE 数据表 SET 字段值 = 新值 WHERE 条件– 例 1 : UPDATE grade SET 数学 = 数学 +10 说明:将 grade 表中所

有人的成绩加 10 分 – 例 2 : UPDATE grade SET 数学 =100 WHERE 姓名 like '% 敏 %'

功能说明:将姓名中含有敏的人的数学成绩更新为 100 分

Page 10: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

INSERT INTO 指令

功能说明:该语句等价于:INSERT INTO grade( 学号 , 姓名 , 语文 , 数学 , 英语 ) VALUES (5678, ' 周润发 ',70,80,90)

( 3 ) INSERT INTO 指令:添加数据记录。

基本格式 1 : INSERT INTO 数据表 VALUES (字段新值)基本格式 2 : INSERT INTO 数据表(字段一,字段二,……) VALUES (字段新值)

其中关键字两种格式的区别是:当 values 含有数据库表所有字段的值,并且顺序和数据库字段一致时,就可以省略数据库表后面的字段名称。

例 1 : INSERT INTO grade( 学号 , 姓名 , 数学 ) VALUES (1234, ' 周润发 ',70)例 2 : INSERT INTO grade VALUES (5678, ' 周润发 ',70,80,90)

Page 11: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

JDBC 的四种类型

目前,比较常见的 JDBC 驱动程序可分为以下 4 种类型:

( 1 ) JDBC-ODBC 桥加 ODBC 驱动程序: JDBC-ODBC 桥产品利用 ODBC 驱动程序提供 JDBC 访问。在服务器上必须可以安装 ODBC 驱动程序。

( 2 )本地 API :这种类型的驱动程序把客户机 API 上的 JDBC 调用转换为Oracle 、 Sybase 、 Informix 、 DB2 或其它 DBMS 的调用。

( 3 ) JDBC 网络纯 Java 驱动程序:这种驱动程序将 JDBC 转换为与DBMS 无关的网络协议,之后这种协议又被某个服务器转换为一种 DBMS 协议。这种网络服务器中间件能够将它的纯 Java 客户机连接到多种不同的数据库上。

第 3 类和第 4 类驱动程序将成为 JDBC 访问数据库的首选方法。第1 类和第 2 类驱动程序在直接的纯 Java 驱动程序还没有上市前会作为过渡方案来使用。

( 4 )本地协议纯 Java 驱动程序:这种类型的驱动程序将 JDBC 调用直接转换为 DBMS 所使用的网络协议。这将允许从客户机机器上直接调用 DBMS服务器,是 Intranet 访问的一个很实用的解决方法。

Page 12: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

ODBC 数据源

ODBC 配置

Page 13: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

数据驱动程序 使用 JDBC 的第一步是安装驱动程序。大多数数据库都有 JDBC 驱动程序,常用的 JDBC 驱动程序如图所示。

Page 14: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

Driver

连接数据库前先要加载驱动程序

import java.sql.*

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

Class.forName(“jdbc.driver_class_name”);

com.microsoft.jdbc.sqlserver.SQLServerDriver

org.gjt.mm.mysql.Driver

Oracle.jdbc.driver.OracleDriver

Page 15: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

Connection 对象

public static Connection getConnection(String url, String user, String password) throws SQLException

建立是建立与数据库之间的连接,也就是创建一个 Connection 的实例。 DriverManager 类的 getConnection() 方法将建立数据库的连接:

在程序的最后,应该关闭 Connection 对象:public void close() throws SQLException

SQL Server 下的 URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xx

Page 16: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

Connection 接口的方法

public Statement createStatement() throws SQLException

public void commit() throws SQLException

public boolean getAutoCommit() throws SQLException

public CallableStatement prepareCall(String sql) throws SQLException

Page 17: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

Statement 对象

Statement 对象用于将 SQL 语句发送到数据库中。存在 3 种 Statement 对象:

( 1 ) Statement ;

( 2 ) PreparedStatement (从 Statement 继承而来);

( 3 ) CallableStatement (从PreparedStatement 继承而来)。

Page 18: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

Statement 接口

Statement 接口提供了两种执行 SQL 语句的常用方法:

public ResultSet executeQuery(String sql) throws SQLException

用于产生单个 ResultSet 的语句,例如 SELECT 语句。

public int executeUpdate(String sql) throws SQLException

用于执行 INSERT 、 UPDATE 或DELETE 语句以及 SQL DDL 语句,例如 CREATE TABLE 和 DROP TABLE 。该方法返回一个整数,指示受影响的行数。

Page 19: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

ResultSet 对象

ResultSet 包含符合 SQL 语句执行结果所有行,并且它通过一套 get 方法提供了对这些行中数据的访问,常用的 get 方法有:

int getInt(int columnIndex) ,取得当前行中第 columnIndex列的整数的值。int getInt(String columnName) ,取得当前行中列名为 columnName 的整数的值。其他方法:getDate(int columnIndex) getDate(String columnName)getString(int columnIndex) , getString(String columnName)

ResultSet 维护指向其当前数据行的光标,让光标向下移动一行的方法是:public boolean next() throws SQLException

Page 20: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

利用 While 循环获取数据表中所有记录

利用 ResultSet 对象在建立时,记录指针指向第一条记录之前,结合 ResultSet 对象提供的 next 方法,在 while 循环中移动记录指针,向下逐条地将数据库中的记录依次获取,在移动到记录的最后一条,由 next 方法返回值 false 来结束循环。

语法结构:语法结构: while(rs.next())while(rs.next()) { {

rs.getXXX(“rs.getXXX(“ 字段名称”字段名称” );); …… ……

}}

Page 21: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

结果集类型

结果集类型有 3 种:

ResultSet.TYPE_FORWORD_ONLY :指定 ResultSet 对象是不可滚动,这是默认值。

ResultSet.TYPE_SCOLL_INSENSITIVE :指定 ResultSet 对象是可滚动的,但是对数据库中修改不敏感。

ResultSet.TYPE_SCOLL_SENSITIVE :指定 ResultSet 对象是可滚动的,而且对数据库的修改敏感。

Page 22: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

修改对结果集的影响

类型 看到内部更新

看到内部删除

看到内部插入

看到外部更新

看到外部删除

看到外部插入

只向前 是 否 否 否 否 否

可滚动不敏感

是 是 否 否 否 否

可滚动敏感 是 是 否 是 否 否

Page 23: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

结果集的并发性

结果集的并发性( Concurrency )决定 ResultSet 对象是否可以修改数据库中的行。可以使用 ResultSet 类中定义的 int常量来指定结果集的并发性。

ResultSet.CONCUR_READ_ONLY ,指定 ResultSet 对象不能修改数据库,默认值。

ResultSet.CONCUR_UPDATABLE ,指定 ResultSet 对象可以修改数据库

Page 24: 第七章  JSP 中数据库的使用

动态网页设计( JSP) http://www.swust.net.cn

总结 :JDBC 访问数据库基本方法

数据访问基本格式

Class.forName("JDBC 驱动程序 ");

Connection conn=DriverManager.getConnection(" 相应 JDBC 驱动程序的连接串 );

Statement stmt=conn.createStatement();

ResultSet rs=stmt.executeQuery("DQL 语句 ");// 如果是数据查询

stmt.executeUpdate("DML 语句 ");// 如果是数据操作