|
知识路径: > 计算机系统综合知识 > 数据库系统 > 数据库管理系统的类型、结构和性能评价 > 数据操作 >
|
相关知识点:3个
|
|
|
|
访问接口是指分布式环境中保证操作系统、通信协议、数据库等之间进行对话,互操作的软件系统。访问接口的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络,不同DBMS和某些访问语言的透明性,即下面3个透明性。
|
|
|
|
(2)服务器透明性:不管服务器上的DBMS是何种型号的数据库系统,一个好的访问接口都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。
|
|
|
(3)语言透明性:客户机可用任何开发语言进行发送请求和接收回答,被调用的功能应该像语言那样也是独立的。
|
|
|
应用系统访问数据库的接口方式有多种,最常用的有专用调用、ODBC和JDBC。
|
|
|
|
每个数据库引擎都带有自己的用于访问数据库的动态链接库,应用程序可利用它存取和操纵数据库中的数据。如果应用程序直接调用这些动态链接库,就说它执行的是专用调用,因为该调用对于特定的数据库产品来说是专用的。
|
|
|
专用调用接口的优点是执行效率高,由于是专用,编程实现较简单。但它的主要缺点是不具通用性,对于不同的数据库引擎,应用程序必须连接和调用不同的专用动态链接库,这对于网络数据库系统的应用是极不方便的。
|
|
|
|
ODBC(Open Database Connectivity,开放数据库互连)是Microsoft公司提出的,被当前业界广泛接受的应用程序编程接口(Application Programming Interface, API)标准,它以X/Open和ISO/IEC的调用级接口规范为基础,用于对数据库的访问。
|
|
|
ODBC实际上是一个数据库访问函数库,使应用程序可以直接操纵数据库中的数据。ODBC是基于SQL语言的,是一种在SQL和应用界面之间的标准接口,它解决了嵌入式SQL接口非规范核心,免除了应用软件随数据库的改变而改变的麻烦。ODBC的一个最显著的优点是,用ODBC生成的程序是与数据库和数据库引擎无关的,为数据库用户和开发人员屏蔽了异构环境的复杂性,提供了数据库访问的统一接口,为应用程序实现与平台的无关性和可移植性提供了基础。
|
|
|
ODBC主要由4个部分组成:应用程序、驱动程序管理器、驱动程序、数据源。
|
|
|
(1)应用程序:执行处理并调用ODBC API函数,以提交SQL语句并检索结果。
|
|
|
(2)驱动程序管理器:根据应用程序需要加载/卸载驱动程序,处理ODBC函数调用,或把它们传送到驱动程序。
|
|
|
(3)驱动程序:处理ODBC函数调用,提交SQL请求到一个指定的数据源,并把结果返回到应用程序。如果有必要,驱动程序修改一个应用程序请求,以使请求与相关的DBMS支持的语法一致。
|
|
|
(4)数据源:包括用户要访问的数据及其相关的操作系统、DBMS及用于访问DBMS的网络平台。
|
|
|
ODBC的API一致性级别分为3级,分别是核心级、扩展1级和扩展2级。
|
|
|
(1)核心级:最基本的功能,包括分配、释放环境句柄,数据库连接,执行SQL语句等。核心级函数能满足最基本的应用程序的要求。
|
|
|
(2)扩展1级:在核心级的基础上增加了一些函数,通过它们可以在应用程序中动态地了解表的模式、可用的概念模型类型及它们的名称等。
|
|
|
(3)扩展2级:在扩展1级的基础上又增加了一些函数。通过它们可以了解到关于主关键字和外来关键字的信息、表和列的权限信息、数据库中的存储过程信息等,并且还有更强的游标和并发控制功能。
|
|
|
|
JDBC(Java Database Connectivity, Java数据库连接)是一种可用于执行SQL语句的Java API。它由一些Java语言编写的类和接口组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以使用纯Java语言编写完整的数据库应用程序。而且因为JDBC基于X/Open的SQL调用级接口(CLI,这是ODBC的基础),JDBC可以保证JDBC API在其他通用SQL级API(包括ODBC)之上实现。这意味着所有支持ODBC的数据库不加任何修改就能够与JDBC协同合作。
|
|
|
通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。JDBC扩展了Java的能力,如使用Java和JDBCAPI就可以公布一个Web页,页面中带有能访问远端数据库的Applet。
|
|
|
|
到目前为止,微软的ODBC可能是用得最广泛的访问关系数据库的API。它几乎能够连接任何一种平台、任何一种数据库。那么,为什么不直接从Java中使用ODBC呢?
|
|
|
(1)ODBC并不适合在Java中直接使用。ODBC是一个C语言实现的API,从Java程序调用本地的C程序会带来一系列类似安全性、完整性、健壮性的问题。
|
|
|
(2)完全精确地实现从C代码ODBC到Java API写的ODBC的翻译也并不令人满意。比如,Java没有指针,而ODBC中大量地使用了指针。因此,对Java程序员来说,把JDBC设想成将ODBC转换成面向对象的API是很自然的。
|
|
|
(3)ODBC并不容易学习,它将简单特性和复杂特性混杂在一起,甚至对非常简单的查询都有复杂的选项。而JDBC刚好相反,它保持了简单事物的简单性,但又允许复杂的特性。
|
|
|
(4)JDBC这样的Java API对于纯Java方案来说是必需的。当使用ODBC时,人们必须在每一台客户机上安装ODBC驱动器和驱动管理器。如果JDBC驱动器是完全用Java语言实现,那么JDBC的代码就可以自动的下载和安装,并保证其安全性。而且,这将适应任何Java平台。
|
|
|
总之,JDBC API是能体现SQL最基本抽象概念的,最直接的Java接口。它构建在ODBC的基础上。JDBC保持了ODBC的基本设计特征。实际上,这两种接口都是基于X/Open SQL的调用级接口。它们的最大区别是,JDBC以Java的风格和优点为基础,并强化了它。
|
|
|