《数据库访问接口.ppt》由会员分享,可在线阅读,更多相关《数据库访问接口.ppt(113页珍藏版)》请在三一文库上搜索。
1、第五章 数据库访问接口,第五章 数据库访问接口,5.1 概述 5.2 ODBC与DAO对象 5.3 JDBC原理与应用 5.4 OLE DB和ADO 5.5 数据库中间件,5.1 概述,DBMS是非常复杂的软件,编写程序通过某种数据库专用接口与其通信是非常复杂的工作,为此,产生了数据库的客户访问技术,即数据库访问技术。 开放的数据库访问接口为数据库应用程序开发人员访问与不同的、异构的数据库提供了统一的访问方式,采用这种数据库接口可以通过编写一段代码实现对多种类型数据库的复杂操作。实现了开放数据库的互联,并大大减小了编程的工作量和开发时间。,目前流行的开放数据库访问接口有: ODBC JDBC
2、OLE DB 数据库网关(SQL网关)。,(1)ODBC,ODBC是Microsoft公司推出的开放数据库接口标准。ODBC为应用程序和驱动模块提供了一个定义良好的、不依赖于数据库的应用程序接口(API)。并且保持了与SQL标准的一致性。 使用API时,ODBC通过一个驱动管理器来判定应用程序要连接的数据库的类型,并载入(或卸载)对应的ODBC驱动。这样,就实现了应用程序和数据库之间的相互独立,简化了从Windows操作系统(以及其他一些操作系统)到数据库的访问。 目前,越来越多的第三方厂商在设计应用开发集成环境时,积极采用ODBC技术,使应用开发工具可通过ODBC实现对异构数据库的快捷和方便
3、的访问。,(2)JDBC,JDBC(Java Database Connectivity)是JavaSoft提供的第一个支持lava语言的数据库API 它支持基本SQL功能,在不同的数据库功能模块的层次上为Java开发人员提供了一个支持Java开发或支持Java应用程序运行的环境访问各种数据库的统一的用户界面,同时还提供了多样化的数据连接方式。 JDBC主要由两层组成:JDBC应用程序接口(JDBC API)和JDBC驱动应用程序接口。 JDBC API提供从应用程序到JDBC管理器的通讯,开发者通过API使用标准Java机制访问数据库。 数据库供应商提供JDBC驱动接口,也可以通过JDBC-
4、ODBC连接桥使用传统的0DBC连接:,(3)OLE DB,OLE DB定义了一个访问服务器的集合,通过这些服务器可以很容易地连接到任意数目的数据源。这样,开发者就可以把多种不同的数据源作为单一的虚拟数据库来管理。OLE DB允许使用标准的COM接口访问数据。 OLE DB为开发者提供访问关系数据库、文件、扩展表、电子邮件等数据的方法。通过COM接口,开发者可以使用OLE DB方便地集成面向对象的数据库和多维数据库。 核心思想是生成独立的OLE DB组件对象,用以调度数据提供者的各种附加特性和功能。这些独立的OLE DB组件叫做“服务提供者”,允许应用程序使用它们实现不同数据联合(同构的或异构
5、的)之间的互联。数据以单一的视图的形式存在,而不管它们的数据模型是关系型的、面向对象的,还是多维的。,(4)数据库网关,数据库网关也叫SQL网关,是一种应用程序接口(API),通过使用同一接口提供对运行在多种平台上的不同数据库的访问。它们类似于实际的数据库中间件产品,为开发者提供访问任意数目数据库的接口。 数据库网关把SQL调用解释成为标准PAP(Format and Protocol)格式。PAP格式实现通用的客户机和服务器连接,也就是异构数据库和运行平台的通用连结。 数据库网关可以把API调用直接翻译成PAP,把请求传递到目标数据库并翻译,以便目标数据库和平台做出响应。,第五章 数据库访问
6、接口,5.1 概述 5.2 ODBC与DAO对象 5.3 JDBC原理与应用 5.4 OLE DB和ADO 5.5 数据库中间件,5.2 ODBC与DAO对象,5.2.1 ODBC和DAO概述 5.2.2 ODBC的使用 5.2.3 DAO的使用,5.2.1 ODBC和DAO概述,(1)ODBC概述 ODBC是80年代末90年代初出现的技术,它为编写关系数据库的客户软件提供了统一的接口。ODBC提供统一的API,可用于处理不同数据库的客户应用程序。 使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。由于ODBC为关系数据库提供了统一的接口,现在已经被广泛应用,并
7、逐渐成为关系数据库接口的标准。,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 ODBC的最大优点是能以统一的方式处理所有的关系数据库。 但是,ODBC仅限于关系数据库,由于ODBC的关系型特性,很难使用ODBC与非关系数据源进行通信,例如对象数据库、网络目录服务、电子邮件存储等。,(2)DAO概述 DAO(Database Access Object,数据访问对象)属于数据访问客户端。是第一个面向对象的数据库访问接口。 DAO是Microsoft
8、一种用来访问Jet引擎的方法,主要适用于单系统应用程序或在小范围本地分布中实现对桌面数据库(如Access、FoxPro、dBase等)的访问。 使用DA0的程序编码非常简单。它提供了完成关系数据库系统管理所需的全部操作的属性和方法:包括创建数据库,定义表、字段和索引,以及建立表间的关系,定位和查询数据库等工具。,Jet(Joint Engine Technology,数据连接引擎技术)是一种基于工作站,通过DA0访问数据库的机制。 Jet机制有自己的查询和结果集处理功能,并可对同构或异构数据源作查询处理。 Jet技术目前已经达到了4.0版本,它是DA0,Access,VB等Windows应用
9、进行数据库访问的基础。 引擎本身的数据库格式为MDB,也支持对目前流行的绝大多数数据库格式的访问,当然MDB是数据库引擎中效率最高的数据库。,(3)ODBC与DA0的区别 ODBC和DA0的区别在于它们访问数据库的机制不同。 0DBC的工作依赖于数据库制造商提供的驱动程序,使用ODBC API的时候,Windous的ODBC管理程序把数据库访问的请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS完成数据库访问工作。 而DA0则可以绕开了中间环节,直接使用Microsoft提供的数据库连接性引擎技术(Jet)对数据库访问对象集进行工作,速度比0DBC快。 ODBC是一种通用数据访问模
10、型,而DAO更多的是作为一种数据访问客户端。 一般来说DA0是本机Access数据库数据源首选的访问接口,但在客户/服务器体系结构上不如ODBC功能强大。,5.2.2 ODBC的使用,1. ODBC的组成和结构 2. ODBC的基本工作流程 3. 使用ODBC MFC类 4. ODBC数据源的管理,1. ODBC的组成和结构,一个完整的ODBC由四个部分组成:应用程序接口、驱动程序管理器、数据库驱动程序和数据源。,ODBC组件图,(1)应用程序接口 负责处理并调用ODBC函数、发送对数据库的SQL请求及取得结果。 它并不直接与数据库打交道,因此,屏蔽了不同ODBC数据库驱动器之间函数调用的差异
11、,屏蔽了底层数据库系统的不同。为用户提供统一的SQL编程接口和调用级界面,方便访问来自多种DBMS的数据。 (2)驱动程序管理器 驱动程序管理器是一个带有输入程序的动态链接库(DLL),主要目的是为应用程序装载数据库驱动程序处理0DBC调用的初始化调用,提供0DBC调用的参数有效性和序列有效性。,(3)数据库驱动程序 数据库驱动程序是一个完成ODBC函数调用并与数据之间相互影响的DLL。 如,当应用程序调用SQLBrowseConnect(),SQLConnect()或SQLDriverConnect()函数时,驱动程序管理器装入驱动程序。如果需要,数据库驱动程序将会修改应用程序的请求,使得请
12、求符合相关的DBMS所支持的文法。 所以,ODBC驱动管理器的目的是加载数据库驱动器,便于ODBC函数调用。 (4)数据源 数据源由用户想要存取的数据以及与它相关的操作系统、DBMS和用于访问DBMS的网络平台组成。 数据源负责为应用程序存储和管理数据。它包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。,ODBC实际上是一种相当底层的访问技术,因此它可以从底层设置和控制数据库,完成一些高级数据库技术无法完成的功能。,2. ODBC的基本工作流程,当应用程序要访问一个数据库时: 首先必须注册一个数据源,ODBC管理器根据数据源提供的信息建立起ODBC与具体数据库的联系。 这样,应
13、用程序只需要将数据源名提供给ODBC,就能建立起与相应数据库的连接。 ODBC API不能直接访问数据库。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序。而驱动程序在执行完相应的操作之后,将结果通过驱动程序管理器返回给应用程序。 在访问ODBC数据源时,需要ODBC驱动程序的支持。,一个ODBC应用的建立应涵盖以下主要内容: 建立需要操作数据库的应用程序,该程序通过调用ODBC函数提交SQL语句 提供运行环境,该环境应包含数据库驱动程序,它负责处理ODBC函数调用,向数据源提交SQL请求,向应用程序返回结果,必要时将SQL语法翻译成符合DBMS语法规定的格式 具有由用
14、户数据库、DBMS等构成的可供应用程序访问的数据源,具体来说,通过ODBC访问数据库的基本步骤如下: 创立并配置数据源; 建立一个与数据源的对话连接; 向数据源发出SQL请求; 定义一个缓冲区和数据格式用于存储访问结果; 提取结果; 处理各种错误; 向用户报告结果; 关闭与数据源的连接,Microsoft Developer Studio为大多数标准的数据库格式提供了32位ODBC驱动器。这些标准数据格式包括有:SQL Server,Access,Paradox,dBase,FoxPro,Excel,Oracle 以及Microsoft Text。 ODBC API是一个内容丰富的数据库编程接
15、口,包括60多个函数、SQL数据类型以及常量的声明。ODBC API 独立于DBMS和操作系统的,而且它与编程语言无关。 不过直接使用ODBC API比较麻烦,所以微软后来又发展出来DAO、更容易开发程序。,3. 使用ODBC MFC类,ODBC为关系数据库提供了统一的接口,但是ODBC API十分复杂。在Visual C+中,MFC(Microsoft Foundation Classe微软基础类库)提供了一些类, 对ODBC API进行封装,为ODBC编程提供了一个面向对象的方法,ODBC编程的复杂度大大降低。 MFC ODBC类在使用上比ODBC API容易,但是损失了ODBC API对
16、低层的灵活控制,因此,MFC ODBC类属于高级数据库接口。,同ODBC API编程类似,MFC的ODBC编程也要先建立同ODBC数据源的连接,这个过程由一个CDatabase对象的Open函数实现。然后CDatabase对象的指针将被传递到CRecordSet对象的构造函数里,使CRecordSet对象与当前建立起来的数据源连接结合起来。 完成数据源连接之后,大量的数据库编程操作将集中在记录集的操作上。CRecordSet类的丰富的成员函数可以让开发人员轻松地完成基本的数据库应用程序开发任务。 当然,完成了所有的操作之后,在应用程序退出运行状态的时候,需要将所有的记录集关闭,并关闭所有同数据
17、源的连接。,MFC对ODBC的封装主要是开发了CDatabase类和CRecordSet类。 使用CDatabase:OpenEx通过驱动程序建立一个数据源的连接 使用CDatabase:Close关闭与数据源的连接 使用CRecordSet:Open()和Requery()成员函数可以实现记录查询,CDatabase类的成员,CRecordset的类成员,4. ODBC数据源的管理,在0DBC中,应用程序不能直接存取数据库,它必须通过管理器和数据库交换信息。 0DBC管理器负责安装驱动程序,将应用程序的SQL语句及其他信息传遗给驱动程序,并帮助程序员跟踪0DBC的函数调用,而驱动程序则负责将
18、运行结果送回应用程序。 数据源负责将运行结果送回应用程序。数据源在使用之前必须进行创建和配置。 完成这些步骤后,应用程序就能够通过数据源直接操纵数据库。 用户可通过如下两种方式创建或配置数据源: 系统函数调用 ODBC数据源管理程序,下面首先介绍0DBC管理器中各个页面的用途: 用户DSN。0DBC用户数据源存储了如何与指定数据库提供者连接的信息,用户数据源只对当前用户可见,且只能用于当前机器。这里的当前机器是指这个配置只对当前的机器有效,而不是指只能配置本机上的数据库。它可以配置局域网中另一台机器上的数据库。 系统DSN。0DBC系统数据源存储了如何指定数据库提供者连接的信息。系统数据源对当
19、前机器上的所有用户都是可见的,包括NT服务。也就是说在这里配置的数据源,只要是这台机器的用户都可以访问。 文件DSN。0DBC文件数据源允许用户连接数据提供者。文件DSN可以由安装了相同驱动程序的用户共享。这是介于用户DSN和系统DSN之间的一种共享情况,驱动程序。这页列出了本机上所有安装的数据库驱动程序,其中列举了每个驱动程序的名称、版本提供商公司、驱动程序文件名,以及安装日期。 跟踪。0DBC跟踪允许创建调用ODBC的日志,提供给技术人员查看。页面中可设定日志的路径和文件名。技术人员可通过这里面的信息看到本机上所有的数据库访问的时间、用户、出错信息等情况;也可以通过这个辅助调试应用程序启动
20、Visual Studio的分析器来进行ODBC的跟踪。 连接池。连接池允许应用程序重用原来打开的连接。这样可以节省连接到服务器的往返过程。 关于。列出所有的ODBC的核心文件。,配置一个Access数据源的过程如下: 在Windows系统下进入控制面板,打开ODBC数据源,若是Windows 2000平台,则打开管理程序下的数据源ODBC,屏幕上将出现如图所示的“ODBC数据源管理器”对话框,选择所使用的数据库驱动程序,如选择Microsoft Access Driver (*.mdb), 单击“完成”按钮,出现如图所示的对话框,选择“系统DSN”标签,即选择“系统数据源”。 要使系统上的所
21、有应用程序都可以使用它,必须选用系统DSN,这是建立Web站点的需要。 单击“添加”按钮,进入“创建新数据源”对话框,如图所示,在“数据源名”输入框中键入数据源名,单击“选择”按钮为该数据源指定一个已创建好的Access数据库(*.mdb),该数据库应该是在Web应用程序中即将访问的数据库。 单击“确定”按钮,回到“创建新数据源”对话框。 单击“确定”按钮直到关闭ODBC数据管理器, 此时完成一个数据源的建立过程。 若要修改该数据源的配置,可在“ODBC数据源管理器”对话框中选定要更改的数据源,再单击“配置”按钮。,ODBC并不完美,他虽然统一了对多种常用DBMS的访问,但是这个“访问”的过程
22、是非常困难的,他仍然存在大量的低级调用,程序员必须将大量的精力放在底层的数据通信中,而不能专注于所要处理的数据。 为了改善这种极其不友好的接口,使得在程序开发中,数据库访问的工作更加容易,微软提出里一个解决方案:DAO,5.2.3 DAO的使用,DAO是Microsoft的一种用来访问Jet引擎的方法。主要适用于单系统应用程序或在小范围本地分布中实现对桌面数据库(如Access、FoxPro、dBase等)的访问。 Microsoft Jet数据库引擎是一种数据管理组件,许多数据库工具都是基于它实现的, 例如Microsoft Access,Microsoft Visual Basic以及一些
23、Microsoft桌面数据库驱动程序。,DAO结构图,DAO是完全面向对象的,对开发人员来说,只需了解DAO的使用,而由数据库引擎把DAO上的操作转换为对具体的数据库文件的操作。 DAO对象模型是一个分层的树形结构。该结构由对象和集合构成。 其中最重要,使用最频繁的是RecordSet对象。,DAO对象层次图,VC+在4.0版本之后增加了DAO的封装,即MFC的DAO类,使得数据库开发人员可以通过Microsoft Jet数据库引擎访问数据库。 MFC DAO类与DAO对象之间的对应关系,MFC ODBC和MFC DAO的区别: MFC DAO类使用Microsoft Jet数据库引擎操作位于
24、系统数据库和用户数据库中的数据, 它与基于ODBC的MFC数据库类截然不同,DAO通过Microsoft Jet访问数据,而MFC的ODBC类通过ODBC和ODBC驱动程序操作数据。 一般来说,在访问Microsoft Jet数据库引擎,基于DAO的MFC类比基于ODBC的MFC类处理能力更强大。,第五章 数据库访问接口,5.1 概述 5.2 ODBC与DAO对象 5.3 JDBC原理与应用 5.4 OLE DB和ADO 5.5 数据库中间件,5.3 JDBC原理与应用,5.3.1 JDBC概述 5.3.2 JDBC的体系结构 5.3.3 JDBC的接口 5.3.4 JDBC访问数据库的模式
25、5.3.5 JDBC访问数据库的方法,5.3.1 JDBC概述,JDBC技术是JavaSoft公司设计的Java语言的数据库访问API。 ODBC主要是对数据库系统的C语言接口 最初的Java语言并没有数据库访问能力。JDBC是第一个支持Java语言的标准的数据库API 其目的在于使Java程序与数据库服务器的连接更加方便。在功能方面JDBC与ODBC相同,它给程序员提供了统一的数据库访问接口。,与ODBC相似,JDBC提供给程序员的编程接口是由两部分组成: 一是面向应用程序的编程接口JDBC API,它是为应用程序员提供的,可以进行数据库连接和调用SOL语句访问支持JDBC的数据库,并得到返
26、回结果; 二是供底层开发的驱动程序接口JDBC Driver API,它是各个数据库厂商提供的。 值得一提的是,JavaSoft提供了一种特殊的驱动程序,JDBC-ODBC桥,它支持JDBC通过现有的ODBC来访问数据库系统。 目前,JDBC已经得到了许多厂商的支持,包括Borland, IBM、Oracle和Sybase等公司。当前流行的大多数数据系统都推出了自己的JDBC驱动程序。,5.3.2 JDBC的体系结构,JDBC的总体结构类似于ODBC,也由四个部件组成:应用程序接口、驱动程序管理器、数据库驱动程序和数据源。,JDBC的数据库驱动程序有四类: JDBC-ODBC桥(bridge)
27、 JDBC-ODBC桥利用ODBC驱动程序提供JDBC访问。 在服务器上必须可以安装ODBC驱动程序。 作为JdbcOdbc.class实现 本地API Java驱动程序 这种类型的驱动程序把客户机API上的JDBC调用利用JNI(Java Native INterface)转换为本地数据库(如Oracle、Sybase、Informix、DB2或其它DBMS)的API调用。 类型2通常比类型1的速度要快,网络协议Java驱动程序: 这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。 这种网络服务器中间件能够将它的纯Java客户机连接到多种
28、不同的数据库上。 数据库协议Java驱动程序: 这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。 这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。 第3类和第4类驱动程序将成为JDBC访问数据库的首选方法。第1类和第2类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。,5.3.3 JDBC的接口,JDBC 的实现类在java.sql包中,需要在程序中通过import语句引入。JDBC的接口分为两个层次: 面向程序开发人员的JDBC API 底层的JDBC Driver API JDBC Driver API 每
29、个数据库JDBC驱动必须提供一个响应的驱动类。它由java.sql.Driver派生。大部分JDBC驱动只需要完成这些JDBC API所定义的抽象类就可以了。 所有的JDBC驱动必须提供对java.sql.Connection、java.slq.Statement、java.sql.PreparedStatement和java.sql.ResultSet的实现。,JDBC API: 被描述为一组抽象的Java接口,通过JDBC API,应用程序可以对数据库进行打开连接,执行SQL语句并且处理结果。 JDBC API中最重要的接口是: Java.sql.DriverManager:处理驱动程序的
30、调入,并且对产生的新的数据库连接提供支持。 Java.sql.Connection:代表对特定数据库的连接。 Java.sql.Statement:代表一个特定的容器,来对一个特定的数据库执行SQL语句。其中java.sql.Statement又有两个子类 Java.sql.PreparedStatement:用于执行预编译的SQL语句 Java.sql.CallableStatement:用于执行对一个数据库内嵌过程的调用 Java.sql.ResultSet:控制对一个特定语句的数据的存取。,JDBC类图,5.3.4 JDBC访问数据库的模式,JDBC既支持两层模型,也支持三层模型。 Ja
31、va Applet 最初的JDBC应用是Java Applet。它的实现方式是通过Web浏览器把应用下载到客户端运行,在客户端直接访问数据库。 其工作过程是:当Web浏览器从服务器上下载了包含有Java Applet的HTML页面时,如其中的Java Applet调用了JDBC,则浏览器运行的JavaApplet直接与指定的数据库建立连接,并向其提交SQL语句,Applet从数据库接受返回的结果并进行处理,将最后结果显示在浏览器上。 在客户机上运行Java Applet通过JDBC技术可以绕过Web服务器直接和数据库服务器连接,并直接把带有结果的HTML页返回客户机浏览器。,Java Serl
32、ets 与Java Applet不同,Java Servlets是运行于Web服务器端的程序,能够象CGI脚本一样扩展Web服务器功能。它在初始化时装入Web服务器的存储空间,并成为服务器的一个组成部分。 其工作过程是:当浏览器向服务器发出请求时,服务器将该请求传递给一个Servlet,该Servlet通过JDBC向数据库发出SQL请求并构造响应结果,然后通过服务器将结果传递回浏览器。 使用Java Servlets虽然可以完全实现通过Web访问数据库。但是Servlet生成网页的方法是在Java类中嵌入HTML标签和表述代码。这就意味着改变表述代码需要修改和重新编译Servlets源文件。因
33、为设计HTML页面的设计人员可能与编写Servlets代码的开发人员不是同一个人,更新基于Servlets的Web应用程序就成了一件非常棘手的事情。,Java Server Page,即JSP JSP是Java Servlets的一个扩展,具有Servlets的所有优势。不同的是它将功能实现和网页设计的功能分开了。 JSP是Sun公司倡导的一种动态网页技术标准,是一种在服务器端编译执行的Web数据库系统应用程序编程语言,其脚本语言是Java,通过在HTML文件中加人Java程序片段和JSP标记构成JSP网页。 JSP技术可以让各公司采用各类Web服务器、应用服务器、浏览器和开发工具等快速创建W
34、eb网页。,5.3.5 JDBC访问数据库的方法,DriverManager,Driver,Connection,Statement,ResultSet,JDBC 类的使用,使用JDBC的第一步是安装驱动程序。大多数数据库都有JDBC驱动程序,常用的JDBC驱动程序如图所示。,连接数据库前先要加载驱动程序 import java.sql.* Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); Class.forName(“jdbc.driver_class_name”); 常见的有: com.microsoft.jdbc.sqlserver.SQLSe
35、rverDriver org.gjt.mm.mysql.Driver Oracle.jdbc.driver.OracleDriver,建立与数据库之间的连接,也就是创建一个Connection的实例。 DriverManager类的getConnection()方法将建立数据库的连接: public static Connection getConnection(String url, String user, String password) throws SQLException 在程序的最后,应该关闭Connection对象: public void close() throws SQL
36、Exception 不同的驱动有不同的URL写法,如SQL Server下的URL: jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=xx,使用Connection接口的方法 public void commit() throws SQLException public Statement createStatement() throws SQLException public boolean getAutoCommit() throws SQLException public CallableStatement prepareCal
37、l(String sql) throws SQLException,Statement对象用于将SQL语句发送到数据库中。 存在3种Statement对象: Statement PreparedStatement(从Statement继承而来) CallableStatement(从PreparedStatement继承而来),Statement接口提供了两种执行SQL语句的常用方法: public ResultSet executeQuery(String sql) throws SQLException 用于产生单个ResultSet的语句,例如SELECT语句。 public int e
38、xecuteUpdate(String sql) throws SQLException 用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,例如CREATE TABLE和DROP TABLE。该方法返回一个整数,指示受影响的行数。,ResultSet包含符合SQL语句执行结果所有行,并且它通过一套get方法提供了对这些行中数据的访问, 常用的get方法有: int getInt(int columnIndex),取得当前行中第columnIndex列的整数的值。 int getInt(String columnName),取得当前行中列名为columnName的整数的
39、值。 其他方法: getDate(int columnIndex) getDate(String columnName) getString(int columnIndex) ,getString(String columnName) ResultSet维护指向其当前数据行的光标,让光标向下移动一行的方法是: public boolean next() throws SQLException,利用ResultSet对象在建立时,记录指针指向第一条记录之前,结合ResultSet对象提供的next方法,在while循环中移动记录指针,向下逐条地将数据库中的记录依次获取,在移动到记录的最后一条,由
40、next方法返回值false来结束循环。 语法结构: while(rs.next() rs.getXXX(“字段名称”); ,结果集类型有3种: ResultSet.TYPE_FORWORD_ONLY:指定ResultSet对象是不可滚动,这是默认值。 ResultSet.TYPE_SCOLL_INSENSITIVE:指定ResultSet对象是可滚动的,但是对数据库中修改不敏感。 ResultSet.TYPE_SCOLL_SENSITIVE:指定ResultSet对象是可滚动的,而且对数据库的修改敏感。,总结:JDBC访问数据库基本方法,Class.forName(“JDBC驱动程序“);,
41、Connection conn=DriverManager.getConnection(“相应JDBC驱动程序的连接串);,Statement stmt=conn.createStatement();,ResultSet rs=stmt.executeQuery(“DQL语句“);/如果是数据查询,stmt.executeUpdate(“DML语句“);/如果是数据操作,第五章 数据库访问接口,5.1 概述 5.2 ODBC与DAO对象 5.3 JDBC原理与应用 5.4 OLE DB和ADO 5.5 数据库中间件,5.4 OLE DB和ADO,5.4.1 概述 5.4.2 OLE DB 5.
42、4.3 ADO,5.4.1 概述,随着网络技术和数据库技术的不断发展,需要将不同形式的数据进行集成。 传统的方法:将数据全移植到DBMS中处理。 但是这种间接访问方式数据更新不及时,空间资源冗余,访问效率低下。 微软公司推出UDA( Universal Data Access,统一数据访问技术)较好的解决了这个问题。为关系型或非关系型数据源提供了统一的,独立于开发工具和开发语言的接口。,UDA通过Microsoft Data Access Components(MDAC)来实现,而MDAC则包括ADO、Open Database Connectivity(ODBC)与OLE DB。 其中,OL
43、E DB被微软公司归类为系统级的接口,定义了一套COM接口,提供从关联数据库及文件系统访问数据的能力,设计用来给系统级的程序员使用。它虽然灵活、功能强大,但仍属于较低级的接口,并且对程序员的要求较高,需要较高水平的知识。 ADO是在OLE DB之上的一个层面,被用来沟通这个低级接口与数据库,简化并实现OLE DB的强大功能,它是为应用程序员设计的。 ODBC为了向后兼容也包含在MDAC中,但ODBC有被OLE DB替代的趋势。,ADO在访问数据存储体时的层次关系图,ADO(Active Data Objects)是微软公司推出的一个功能强大的数据库应用编程接口,它的主要功能是用于应用程序与OL
44、E DB兼容的数据源的连接。 应用程序可以通过ADO实现对各种类型数据库的连接,对数据的查询、修改、更新等。 因而,通过ADO存取数据已经成为流行的选择。,5.4.2 OLE DB,OLE DB:数据库链接和嵌入对象(Object Linking and Embedding DataBase)。是微软提出的基于COM思想且面向对象的一种技术标准,目的是提供一种统一的数据访问接口访问各种数据源, 这里所说的“数据”除了标准的关系型数据库中的数据之外,还包括其他形式的数据。 OLE DB标准的核心内容就是要求对以上这些各种各样的数据存储(Data Store)都提供一种相同的访问接口,使得数据的使
45、用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。,与ODBC API一样,OLE DB 也属于低层的数据库编程接口,OLE DB结合了ODBC对关系型数据库的操作功能,并进行了扩展,可以访问非关系型数据库源。 OLE DB对ODBC进行了两个方面的扩展: 一是提供了一个数据库编程的OLE接口,即COM; 二是提供了一个可用于关系型和非关系型数据源的接口。 OLE DB标准的具体实现是通过一组C+ API 函数, 就像ODBC 标准中的ODBC API 一样,,利用OLE DB进行软件开发应该包括两类软件:OLE DB客户程序(Consumer)和OLE
46、 DB供应程序(Provider) OLE DB客户程序是使用OLE DB接口的应用程序, 例如,采用C+编写的使用OLE DB连接数据库服务器的所有应用程序都是OLE DB客户程序。 OLE DB供应程序是实现OLE DB接口并实际与数据库服务器通信的DLL。 在功能上,OLE DB同ODBC驱动程序相同,不过OLE DB实现的是COM接口,而不是API接口。,5.4.3 ADO,ADO(ActiveX Data Object,ActiveX数据对象)是微软于1996年冬推出的一种面向对象的、基于COM思想的数据库访问接口。 为了使流行的各种编程语言都可以编写符合OLE DB标准的应用程序,
47、微软在OLE DB API之上,提供了一种面向对象、与语言无关的应用编程接口,这就是ActiveX Data Objects,简称ADO。 实质上,ADO就是将OLE DB的面向C+的复杂接口封装起来,提供了便于操作的接口。还可以说ADO其实只是一个应用程序层次的界面,它用OLE DB来与数据库通信,ADO为OLEDB提供高层应用API函数。 ADO是ASP内置的服务器组件,ADO同OLE DB、数据库应用以及数据源之间的关系,ADO是DAO后继产品,它扩展了DAO和RDO所使用的对象模型,因为它包含更少的对象,更多的属性、方法(和参数)以及事件。 ADO提供了一种数据库编程对象模型,类似于D
48、AO的对象模型,但比DAO有更高的灵活性。ADO简化了OLE DB,属于高层的数据库接口。另外同OLE DB相比,能够使用ADO的编程语言更多。 在使用上一般具有以下两种层次关系: 应用程序 - ADO - OLE DB - ODBC - 数据源 应用程序 - ADO - OLE DB - 数据源。,ADO的对象层次图,ADO技术是通过ADO对象的属性、方法来完成相应的数据库访问的。ADO共有以下7个独立对象类。 Connection:连接对象,表示与数据源的连接关系 Command:命令对象,用于定义一些特定的命令语法,以执行相应的动作 RecordSet:记录集对象,用于表示来自数据库表或
49、命令执行结果的记录 Property:属性对象,用于描述对象的属性,每个ADO对象都有一组惟一的属性来描述或控制对象的行为 Error:错误对象,用于描述Connection对象在连接数据库时发生的错误 Field:域(字段)对象,用来表示RecordSet对象的字段,一个记录行包含一个或多个域(字段) Parameter:参数对象,用来描述Command对象的命令参数,是命令所需要的变量部分,ADO实际上是OLE DB的应用层接口,可以处理各种OLE DB支持的数据源。 在ADO模型中,主体对象只有三个:Connection、Command和Recordset。,通常情况下,一个基于ADO的数据库应用使用如下过程操作数据源里的数据: (1) 创建一个Connection 对象。定义用于连接的字符串信息,包括数据源名称、用户ID、口令、连接超时、缺省数据库以及光标的位置。一个Connection 对象代表了同数据源的一次会话。可以通过Connection 对象控制事务,即执行BeginTrans、CommitTrans和RollbackTrans方法。 (2) 打开数据源,建立同数据源的连接。 (3) 执行一个SQL命令。一旦连接成功,就可以运行查询了。
链接地址:https://www.31doc.com/p-2904144.html