《JDBC数据访问接口.ppt》由会员分享,可在线阅读,更多相关《JDBC数据访问接口.ppt(35页珍藏版)》请在三一办公上搜索。
1、5,内容提要,介绍JDBC的结构。介绍如何利用SQL指令操作数据库以及常用的SQL函数的使用。重点介绍JDBC访问数据库的四种基本形式,数据库应用开发简介,作为有效的数据存储和组织管理工具,数据库的应用日益广泛目前主流的数据库产品有Oracle、SQL Server、DB2和SyBase等多种。在数据库开发领域中,有三个方面需要掌握:SQL语言、ODBC数据访问接口和JDBC数据库访问接口。,ODBC数据访问接口,开放式数据库互连ODBC(Open DataBase Connectivity)是微软公司开发的一套开发数据库系统应用程序接口规范,它支持应用程序以标准的ODBC函数和SQL语句操作
2、各种不同的数据库。,JDBC数据访问接口,为支持Java程序的数据库操作功能,Java语言采用了专门Java数据库编程接口(JDBC,Java DataBase Connectivity),用于在Java程序中实现数据库操作功能并简化操作过程。JDBC支持基本SQL语句,提供多样化的数据库连接方式,为各种不同的数据库提供统一的操作界面,SQL语言,SQL(Structured Query Language)是使用关系模型的数据库语言,用于和各类数据库连接,提供通用的数据管理和查询功能。SQL语言最初由IBM公司开发,实现了关系数据库中的信息检索。后几经修改和完善,被国际标准化组织确定为国际标准
3、,目前执行的是1992年制定的SQL-92标准。SQL可以为各种支持SQL-92标准的数据库管理系统(DBMS)所接受和处理,通常各种DBMS都提供图形用户界面,以使用户直接对数据库进行操作。但SQL语言本身并不是完整的编程语言,还需要与其他高级编程语言配合,才能实现应用程序对数据库的访问操作。,SQL语言概述,SQL(Structured Query Language)是关系型数据库的标准语言,是由国际标准组织提出的,各种关系型数据库都支持SQL指令,Oracle在基本的SQL基础上进行了扩充。SQL语句有如下的两大特点(1)SQL是一种类似于英语的语言,很容易理解和书写。(2)SQL语言是
4、非过程化的语言(第四代语言)。SQL集DDL(Data Definition Language:数据定义语言),DML(Data Manipulation Language:数据操作语言)和DCL(Data Control Language:数据控制语言)于一体。用SQL语言可以实现数据库生命周期的全部活动。,SQL语句分类,基本SQL语句,基本的SQL语句包括DQL和DML。也就是对数据库最常用的四大基本操作:查询(Select)、插入(Insert)、更新(Update)和删除(Delete),DQL的3种基本格式,1.基本句型一:(最简单的SELECT语句)SELECT 字段名 FROM
5、 数据表例1.SELECT*FROM grade功能说明:将grade表中的所有字段取出来。例2.SELECT 学号,姓名 FROM grade功能说明:将grade表中学号和姓名字段取出来。例3.SELECT学号,姓名,语文+数学+英语 as 总成绩 FROM grade功能说明:将grade表中的学号和姓名取出来,并将语文、数学和英语成绩相加产生虚拟列总成绩。,2.基本句型二:使用条件查询,SELECT字段名 FROM数据表 WHERE 筛选条件测试句型如下。例1.SELECT*FROM grade WHERE数学60功能说明:把所有数学成绩大于60分的记录选出来。例2.SELECT*FR
6、OM grade WHERE数学=300 or 语文=300功能说明:把数学成绩等于300分或者语文成绩等于300分的人选出来。例3.Like子句基本格式一:“_”匹配。功能说明:每个下划线匹配一个任意字符,注意只匹配一个字符。比如:姓名 like _敏,匹配姓名以“敏”字结尾且字数等于二的所有数据记录,如:“张敏”。例4.Like子句基本格式二:“%”匹配。比如:姓名 Like%敏%,匹配姓名中出现“敏”的所有数据记录,如:“周惠敏”,“于敏”、“敏大”、“敏二”等。比如要在数据库中查询姓江的人,只要利用一条SQL语句就可以了,SELECT*FROM 数据库表 WHERE 姓名 Like 江
7、%。,3.基本句型三:(进行排序),SELECT字段名 FROM 数据表 ORDER BY 字段名测试句型如下。(1)SELECT*FROM grade ORDER BY数学 注:从低到高排序功能说明:从grade表中取出所有字段,并按数学成绩排序。(2)SELECT*FROM grade ORDER BY数学,语文功能说明:从grade表中取出所有字段,并按数学成绩排序,如果数学成绩相同则按照语文成绩排序。(3)SELECT*FROM grade ORDER BY数学 desc 注:从高到低排序功能说明:从grade表中取出所有字段,并按数学成绩倒序。(4)SELECT top 5*FROM
8、 grade功能说明:从grade表中取出前五条记录的所有字段。,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 姓名 l
9、ike%敏%功能说明:将姓名中含有敏的人的数学成绩更新为100分,INSERT INTO指令,(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
10、,80,90)功能说明:该语句等价于:INSERT INTO grade(学号,姓名,语文,数学,英语)VALUES(5678,周润发,70,80,90),聚合函数,聚合函数在信息管理系统经常使用,功能是做一些基本的统计和计算。聚合函数有5个,分别是SUM函数、AVG函数、COUNT函数、MAX函数和MIN函数。,SUN函数,(1)SUN函数,功能是算出某个字段的总值。例.SELECT SUM(数学)As Total FROM grade功能说明:求出所有学生数学成绩总和,这个数值的列名为Total。在SQL输入窗口中输入,如图,聚合函数,(2)AVG函数,功能是算出某个字段的平均值。例.SE
11、LECT AVG(数学)As Average FROM grade功能说明:求出所有学生数学成绩平均分,这个数值的列名为Average。(3)COUNT函数,功能是算出返回记录的行数。例.SELECT COUNT(*)As Counts FROM grade功能说明:求出满足条件的记录总数。(4)MAX函数,功能是算出某个字段的最大值。例.SELECT MAX(数学)As First FROM grade功能说明:求出所有学生数学成绩的最高分,这个数值的列名为First。(5)MIN函数,功能是算出某个字段的总值。例.SELECT MIN(数学)As Last FROM grade功能说明:求
12、出所有学生数学成绩的最低分,这个数值的列名为Last。,分组查询,分组查询包括GROUP BY和HAVING关键字。比如计算某班男生女生的数学平均分,利用可以利用分组查询完成。grade表中添加一列“性别”,如person1.mdb库中的grade表,可以使用“SELECT 性别,AVG(数学)as 平均分 FROM grade GROUP BY 性别”得到男生和女生的平均分,执行的结果如图,计算所有男生的数学平均成绩,有两种方法:(1)SELECT 性别,AVG(数学)as 平均分 FROM grade GROUP BY 性别 HAVING 性别=男(2)SELECT 性别,AVG(数学)a
13、s 平均分 FROM grade WHERE 性别=男 GROUP BY 性别,分组查询,在使用分组查询的时候,有4点需要注意。(1)WHERE子句必须放在GROUP BY子句之前。(2)HAVING子句中只能包含分组字段或者聚合函数。(3)SELECT语句选择的列只能是分组字段或者聚合函数。(4)HAVING必须放在GROUP BY子句之后。,交叉查询,考虑3个表:学生表(Student)、课程表(Course)和选课表(SC)表的关系如图,交叉查询,其中:(1)学生表中的sno表示学生学号,sname表示学生姓名。(2)课程表中cno表示课程编号,cname表示课程的名称。(3)选课表中的
14、sno表示学生学号,cno表示课程编号。查找选择课程为“软件工程”的所有同学姓名?可以利用如下的SQL语句。SELECT b.sname FROM sc a,student b,course cWHERE o=o AND a.sno=b.sno and ame=软件工程其中“sc a”表示给表sc起个别名为a,同样“student b”是给student表起个别名b。该查询实现了三个表之间的交叉查询。,JDBC的四种类型,目前,比较常见的JDBC驱动程序可分为以下4种类型:(1)JDBC-ODBC桥加ODBC驱动程序:一个JDBC-ODBC桥驱动程序提供了一个或多个ODBC驱动程序的JDBC
15、API,它将JDBC请求转换为ODBC请求,因此在每个数据库的客户端都必须安装ODBC驱动程序,这种方式不适合远程访问数据库。(2)本地API结合java驱动程序:这种类型的驱动程序它将对JDBC API的调用转换为Oracle、Sybase、Informix、DB2或其它数据库客户端API的调用。(3)JDBC网络协议纯Java驱动程序:这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。(4)本地协议纯Java驱动程序:这种类型的驱动程序将JDBC调用直接转换为DBM
16、S所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。第3类和第4类驱动程序将成为JDBC访问数据库的首选方法。第1类和第2类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。,前两种驱动机制原理:,Java 应用程序,JDBC API,JDBC 驱动管理器,JDBC-ODBC桥,ODBC驱动,数据库客户端,部分Java 实现的JDBC 驱动,数据库客户端,数据源,数据源,应用层,JDBC层,数据层,数据驱动程序,使用JDBC的第一步是安装驱动程序。大多数数据库都有JDBC驱动程序,常用的JDBC驱动程序如图所示。,C
17、onnection对象,建立与数据库之间的连接,也就是创建一个Connection的实例。DriverManager类的getConnection()方法将建立数据库的连接:public static Connection getConnection(String url,String user,String password)throws SQLException在程序的最后,应该关闭Connection对象:public void close()throws SQLException,Statement对象,Statement对象用于将SQL语句发送到数据库中。存在3种Statement对
18、象:(1)Statement;(2)PreparedStatement(从Statement继承而来);(3)CallableStatement(从PreparedStatement继承而来)。,Statement接口,Statement接口提供了两种执行SQL语句的常用方法:public ResultSet executeQuery(String sql)throws SQLException用于产生单个ResultSet的语句,例如SELECT语句。public int executeUpdate(String sql)throws SQLException用于执行INSERT、UPDAT
19、E或DELETE语句以及SQL DDL语句,例如CREATE TABLE和DROP TABLE。该方法返回一个整数,指示受影响的行数。,ResultSet对象,ResultSet包含符合SQL语句执行结果所有行,并且它通过一套get方法提供了对这些行中数据的访问,常用的get方法有:int getInt(int columnIndex),取得当前行中第columnIndex列的整数的值。int getInt(String columnName),取得当前行中列名为columnName的整数的值。Date getDate(int columnIndex),取得当前行中第columnIndex列的
20、日期的值。Date getDate(String columnName),取得当前行中列名为columnName的日期的值。public String getString(int columnIndex),取得当前行中第columnIndex列的字符串的值。public String getString(String columnName),取得当前行中列名为columnName的字符串的值。其他类型的get方法可以参考java文档。ResultSet维护指向其当前数据行的光标,让光标向下移动一行的方法是:public boolean next()throws SQLException,JDB
21、C四种数据访问格式,格式一:执行基本SQL语句,案例名称:数据访问基本格式一Class.forName(JDBC驱动程序);Connection conn=DriverManager.getConnection(相应JDBC驱动程序的连接串);Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(DQL语句);/如果是数据查询stmt.executeUpdate(DML语句);/如果是数据操作,格式二:实现分页,在JDBC1.0中,结果只能利用next方法每次向前移动一行。,案例名称:数据访问基本格式二Clas
22、s.forName(JDBC驱动程序);Connection conn=DriverManager.getConnection(相应JDBC驱动程序的连接串);Statement stmt=connect.createStatement(结果集类型,结果集并发性);ResultSet rs=stmt.executeQuery(DQL语句);/如果是数据查询stmt.executeUpdate(DML语句);/如果是数据操作,格式三:执行带参数的SQL语句,案例名称:数据访问基本格式三Class.forName(JDBC驱动程序);Connection conn=DriverManager.ge
23、tConnection(相应JDBC驱动程序的连接串);PreparedStatement stmt=connect.PreparedStatement(带参数的SQL语句);pst.setInt(设置参数的值);ResultSet rs=pst.executeQuery();/如果是数据查询stmt.executeUpdate();/如果是数据操作,格式四:执行存储过程,案例名称:数据访问基本格式四Class.forName(JDBC驱动程序);Connection conn=DriverManager.getConnection(相应JDBC驱动程序的连接串);CallableStatem
24、ent cs=con.prepareCall(call 存储过程名(?,?)cs.setInt(1,设置参数的值);/设置输入参数的值cs.execute();/执行存储过程String strBack=cs.getString(2)/得到输出参数的值,小结,介绍JDBC的结构。介绍如何利用SQL指令操作数据库以及常用的SQL函数的使用。重点介绍JDBC访问数据库的四种基本形式,本章习题,5-1 图示ODBC的工作原理。5-2 图示JDBC的工作原理,并列举常用的对象。(企业笔试题)5-3 如图7-16,要求:查找“张三”选择所有课程的名称,写出SQL语句。(企业笔试题)5-5 简述事务的基本概念,如何在JDBC中实现事务?,