Java程序设计电子教案第七章.ppt
《Java程序设计电子教案第七章.ppt》由会员分享,可在线阅读,更多相关《Java程序设计电子教案第七章.ppt(74页珍藏版)》请在三一办公上搜索。
1、第7章 java 数据库编程和网络编程,7.1 关系数据库简介7.2 JDBC概述7.3 连接数据库7.4 网络编程,7.1 关系数据库简介,关系数据库系统的思想是由IBM公司的E.F.Codd于1970年率先提出的。关系数据库支持的数据模型是关系模型。关系模型的基本条件是其关系模式中每个属性值必须是一个不可分割的数据量。简单地说,在关系数据库中数据结构一般是张两维表,这张两维表的每一列的值必须是不可分割的数据项,而任两行应互不相同。关系模型的主要特点是:结构简单,表示力强,易于掌握。语言一体化,非过程化的操作,方便用户使用。有一定的数学理论作基础,利于进一步研究和发展。操作耗时,执行效率低。
2、关系数据库管理系统一般向用户提供数据检索、数据插入、数据删除、数据修改四种基本操作功能。,返回,7.2 JDBC概述,使用JDBC连接数据库JDBC(Java data Base Connectivity)是Java语言为了支持SQL功能而提供的与数据库相联的用户接口,JDBC中包括了一组由Java语言书写的接口和类,它们都是独立于特定的DBMS,或者说它们可以和各种数据相关联。有了JDBC以后,程序员可以方便地在Java语言中使用SQL语言,从而使Java应用程序或Java applet可以实现对分布在网络上的各种关系数据库的访问。使用了JDBC以后,程序员可以将精力集中于上层的功能实现,而
3、不必关心底层与具体的DBMS的连接和访问过程。,下一页,返回,7.2 JDBC概述,JDBC由一组Java语言编写的类和接口组成,使用内嵌式的SQL,主要实现三方面的功能:建立与数据库的连接,执行SQL声明以及处理SQL执行结果。JDBC支持基本的SQL功能,使用它可方便地与不同的关系型数据库建立连接,进行相关操作,并无需再为不同的DBMS分别编写程序。下面我们先介绍JDBC与SQL及ODBC的关系,再介绍JDBC支持的两种模型,最后介绍JDBC的抽象接口和数据库驱动器Driver。,上一页,下一页,返回,7.2 JDBC概述,7.2.1 JDBC与SQL尽管一般数据库系统在很大范围内支持SQ
4、L的语义语法,但它们在复杂的高层次功能如存储功能调用和外部连接等方面往往不尽一致。为了解决这一矛盾,JDBC采用以下的几种措施:(1)JDBC允许使用从属于DBMS的系统的任何询问语句,这些询问语句都将被传送给后台的DBMS实际执行。这样增加了使用的灵活性,一个应用程序的询问可以不是SQL形式的,而是SQL的特定引出形式,如为特定的DBMS提供的文件或图片查询。这样做的风险则在某些DBMS中可以会出现错误。,上一页,下一页,返回,7.2 JDBC概述,(2)一般认为ANSI SQL Entry Level的功能比较完备,而且是被广泛支持的。因此为了使JDBC与SQL一致,要求用户使用至少ANS
5、I SQL 92 Entry Level以上的版本,这样就给那些要求广泛的可携带性的应用程序提供了共同命名的保证。(3)对较复杂的应用,JDBC提供了接口类DatabaseMetadata,用户可通过这个类获取相应DBMS的描述信息,再根据所得信息采取特定的查询操作方式。,上一页,下一页,返回,7.2 JDBC概述,7.2.2 JDBC与ODBCMicrosoft的ODBC(Open DataBase Connectivity)是当前与关系型数据库连接最常用的接口。JDBC是建立在ODBC的基础上的,实际上可视为ODBD的Java语言翻译形式。当然两者都是建立在X/Open SQL CLI(C
6、all Level Interface)的抽象定义之上的。而JDBC与ODBC相比,在使用上更为方便。既然ODBC已经是成型的通用接口,我们可在Java程序中直接使用ODBC却要建立JDBC接口,这样做的原因和好处包括以下几点:(1)ODBC使用的是C语言界面,而从Java直接调用C源码容易在安全性、健壮性和可移植性等方面产生问题,运行功效也受到影响。,上一页,下一页,返回,7.2 JDBC概述,(2)将ODBC的C语言API逐字译为Java也并不理想。比如,Java没有指针,ODBC的一种面向对象式的翻译界面,对Java的程序员来说更为自然方便。(3)ODBC难于学习掌握,经常将简单的特性与
7、复杂的特性混合使用。而JDBC相对简单明了许多,容易理解掌握。(4)JDBC有助于实现“纯Java“的方案。当使用ODBC时,每一台客户机都要求装入ODBC的驱动器和管理器。而当使用JDBC,驱动器完全由Java语言编写时,JDBC代码可以在所有的Java平台上自动装入、移植,而且是安全的。当然,在JDBC也可以使用ODBC,但是要通过中介JDBC-ODBC Bridge使用。,上一页,下一页,返回,7.2 JDBC概述,7.2.3 JDBC支持的两种模型在与数据库的连接操作中,JDBC支持两种不同的模型。这两川模型根据用户与数据库的关系层次不同,分别称为两模型和三层模型。两层模型中,Java
8、的应用程序(Applet或Application)直接与数据库联系。用户的SQL声明被提交给数据库,执行的结果回送给用户,如下图所示。这种模型具有客户机/服务器结构,用户的机器如同客户机,存放数据库的机器则如同服务器,连接两者的可以是局域网,也可以是广域网。,上一页,下一页,返回,7.2 JDBC概述,在三层模型中,用户不直接与数据库联系。用户的命令首先发送给一个所谓“中间层”,中间层再将SQL声明发给DMBS。执行的结果也同样由中间层转交。三层模型的好处是,可以通过中间层保持对存取权限和公有数据允许修改类型的控制,便于安全管理。同时,用户可以使用一种较为友善的高层API,由中间层转化为恰当的
9、低层命令,保证较好地运行功效。到目前为止,中间层多用C或C+语言编写。随着Java语言的逐步推广,将出现用Java编写的中间层,更好地利用它的健壮性、多线程,安全性等特点。,上一页,下一页,返回,7.2 JDBC概述,7.2.4 JDBC的抽象接口JDBC中最重要的部分是定义了一系列的抽象接口,通过这些接口,JDBC实现了三个基本的功能:建立与数据的连接、执行SQL声明和处理执行结果。这些接口都存在Java的sql包中,它们的名称和基本功能是:管理驱动器,支持驱动器与数据连接的创建。代表与某一数据库的连接,支持SQL声明的创建。,上一页,下一页,返回,7.2 JDBC概述,在连接中执行一静态的
10、SQL声明并取得执行结果。Statement的子类,代表预编译的SQL声明。Statement的子类,代表SQL的存储过程。代表执行SQL声明后产生的数据结果。,上一页,下一页,返回,7.2 JDBC概述,7.2.5 JDBC的数据库驱动器DriverJava的应用程序员通过sql包中定义的一系列抽象类对数据库进行操作,而实现这些抽象类,实际完成操作,则是由数据库驱动器Driver运行的。JDBC的Driver可分为以下四种类型:(1)JDBC-ODBC Bridge和ODBC Driver这种驱动器器通过ODBC驱动器提供数据库连接。使用这种驱动器,要求每一台客户机都装入ODBC的驱动器。,
11、上一页,下一页,返回,7.2 JDBC概述,(2)Native-API partly-Java Driver这种驱动器将JDBC指令转化成所连接使用的DBMS的操作形式。各客户机使用的数据库可能是Oracle,可能是Sybase,也可能是Access,都需要在客户机上装有相应DBMS的驱动程序。(3)JDBC-Net All-Java Driver这种驱动器将JDBC指令转化成独立于DBMS的网络协议形式,再由服务器转化为特定DBMS的协议形式。有关DBMS的协议由各数据库厂商决定。这种驱动器可以联接到不同的数据库上,最为灵活。目前一些厂商已经开始添加JDBC的这种驱动器到他们已有的数据库中介
12、产品中。要注意的是,为了支持广域网存取,需要增加有关安全性的措施,如防火墙等等。,上一页,下一页,返回,7.2 JDBC概述,(4)Native-protocol All-Java Driver这种驱动器将JDBC指令转化成网络协议后不再转换,由DBMS直接使用。相当于客户机直接与服务器联系,对局域网适用。在这四种驱动器中,后两类“纯Java”(All-Java)的驱动器效率更高,也更具有通用性。但目前第一、第二类驱动器比较容易获得,使用也较普遍。,上一页,返回,7.3 连接数据库,7.3.1 建立数据源一、建立数据库:Access,简单而实用的数据库(初学者的最爱)学习目的:学会ACCEES
13、数据库的使用,并针对上例建立一个数据库文件和数据表。首先,一定要在你的系统中安装OFFICE的ACCEES;)甭管是哪个版本的,安装过程这里就不说了;然后,新建数据库文件,命名为myDB.mdb;二、建立数据源:控制面板-管理工具-数据源(ODBC)(这个很重要,也很简单),下一页,返回,7.3 连接数据库,三、数据库编程的一般过程:1.加载驱动程序:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)2.连接数据库:Connection conn=DriverManager.getConnection(jdbc:odbc:myDB,sn,1234)其中:sn
14、表示用户标识,1234表示用户密码。也可以不用后面的用户标识及密码,这主要取决于你的数据库是否用密码。3.执行SQL:建立SQL语句变量:Statement stmt=conn.CreateStatement(),上一页,下一页,返回,7.3 连接数据库,要执行查询数据库的SELECT语句,可以通过executeQuery语句来实现;要执行插入记录、删除记录、更改记录的SQL语句,可以通过executeUpdate语句来实现。执行executeQuery语句,查询结果存放在ResultSet对象中。4.关闭连接:对数据库操作完成后,应该将与数据库的连接关闭。conn.close()如果执行了S
15、QL语句,还应该将SQL语句变量关闭。同样,如果执行的是查询语句,执行之后,还应该关闭结果集。stmt.close()rs.close(),上一页,下一页,返回,7.3 连接数据库,7.3.2具体示例:首先介绍一些类及其子类:Statement类及其子类1)Statement接口Statement stmt=con.createStatement();/执行SQL声明int count1=stmt.executeUpdate(INSERT INTO testTable(id,name)VALUES(1,wu);int count2=stmt.executeUpdate(INSERT INTO
16、testTable(id,name)VALUES(2,wang);2)PreparedStatement接口String data=5,xu,6,yan;PreparedStatement pstmt=con.prepareStatement(INSERT INTO testTable(id,name)VALUES(?,?);/参数赋值,执行SQL声明,上一页,下一页,返回,7.3 连接数据库,for(int i=0;idata.length;i+)pstmt.setInt(1,Integer.parseInt(datai0);pstmt.setString(2,datai1);pstmt.e
17、xecuteUpdate();3)CallableStatement接口 CallableStatement cstmt=con.prepareCall(call Search(?);/参数赋值cstmt.setInt(1,934678);/执行储存过程。cstmt.execute();结果集ResultSet及ResultSetMetaDataString query=SELECT*FROM testTable;Statement stmt=con.createStatement();/发出查询要求,获得结果集,上一页,下一页,返回,7.3 连接数据库,ResultSet rs=stmt.e
18、xecuteQuery(query);/显示结果集各行各列System.out.println(The detail of testTable is:);ResultSetMetaData rsmd=rs.getMetaData();/获得结果集列数in numCols=rsmd.getColumnCount();/显示列标题,上一页,下一页,返回,7.3 连接数据库,for(int i=1;i1)System.out.print(,);System.out.print(rsmd.getColumnLabel(i);System.out.println();/显示结果集信息while(rs.n
19、ext()/显示一行for(int i=1;i1)System.out.print(,);System.out.print(rs.getString(i);,上一页,下一页,返回,7.3 连接数据库,DatabaseMetaDataDatabaseMetaData dma=con.getMetaData();/驱动器和URL信息System.out.println(nConnected to+dma.getURL();System.out.println(Driver+dma.getDriverName();System.out.println(Version+dma.getDriverVer
20、sion();/数据库信息System.out.println(nDataBase name:+dma.getDatabaseProductName()+dma.getDatabaseProductVersion();System.out.println(DataBase supports SQL keywords:nt+dma.getSQLKeywords();/数据库功能信息函数,上一页,下一页,返回,7.3 连接数据库,dma.supportsANSI92EntryLevelSQL()dma.supportsANSI92FullSQL()dma.supportsStoredProcedu
21、res()1.查询数据库:import java.sql.*;class Query public static void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException ce)System.out.println(SQLException:+ce.getMessage();,上一页,下一页,返回,7.3 连接数据库,try Connection con=DriverManager.getConnection(jdbc:odbc:myDB,sn,1234)
22、;Statement stmt=con.createStatement();ResultSet rs=stmt.executeQuery(select*from employee);while(rs.next()System.out.println(编号+rs.getString(1)+t+姓名,上一页,下一页,返回,7.3 连接数据库,+rs.getString(2)+t+性别+rs.getString(3)+t+工资+rs.getFloat(4);rs.close();stmt.close();con.close();catch(SQLException e)System.out.prin
23、tln(SQLException:+e.getMessage();,上一页,下一页,返回,7.3 连接数据库,注意:在rs.getString(i)中的i表示第几个字段,java编译器会自动在数据库字段进行编号,如姓名字段在数据库中是第二个字段,则rs.getString(i)中的i应为2。2.插入记录:import java.sql.*;class Insert1 public static void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException ce
24、)System.out.println(SQLException:+ce.getMessage();,上一页,下一页,返回,7.3 连接数据库,try Connection con=DriverManager.getConnection(jdbc:odbc:myDB,sn,1234);Statement stmt=con.createStatement();String sqlstr=insert into employee values(2001,邢雪花,女,650);stmt.executeUpdate(sqlstr);,上一页,下一页,返回,7.3 连接数据库,stmt.executeU
25、pdate(insert into employee values(2020,翟建设,男,746);stmt.close();con.close();catch(SQLException e)System.out.println(SQLException:+e.getMessage();,上一页,下一页,返回,7.3 连接数据库,3.修改记录:import java.sql.*;class Update1 public static void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(Class



- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 电子 教案 第七

链接地址:https://www.31ppt.com/p-6510010.html