荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (少年仲永), 信区: Java
标  题: JDBC编程技术(4) (fwd)
发信站: BBS 荔园晨风站 (Sun Apr 11 10:11:09 1999), 转信

技术服务



        第四部分 JDBC编程技术

                    丁锂 孙元 王克宏



     (接上期)

     2.2.5 SQL数据控制(DCL)功能


SQL数据控制功能用于定义控制用户对数据的权限。用户对自己建立的基本表和视图拥有全
部的操作权力,他可以通过使用'GRANT'把某些操作权力授予其他用户,包括'授权'的权
力。被授权的用户还可以把获得的权力再授予其他用户。必要时,又可以使用'REVOKE'把授
予的权力收回,在此不一一介绍。

                2.3 嵌入式SQL(Embedded SQL)


前面我们介绍的SQL是作为独立语言由联机终端用户在交互环境下使用的。还可以嵌入某种
主语言(如Java语言)中。SQL具有双重使用方式,任何SQL语句都可以用于应用程序中。


在使用SQL时,要在程序源代码中定义声明。程序中SQL声明是由主语言中定义的特定的
起始和结束标志来分隔的,在Java语言中相应方法前加上Excute,如stmt.exe-cuteUpdate()

。在编译一个含嵌入式SQL语句的程序时,预编译程序将SQL语句转换成相应的主语言,然后?
?
进行主语言的编译。


数据库工作单元和程序工作单元之间的通信是通过主语言的程序变量来实现的,这些变量可
以同时在主语言和SQL语言中使用,但是不能作为SQL中的表名或列名。


一个SQL语句原则上可以产生或处理一组多个记录,而主语言一次只能处理一个记录,因此当
一个SQL语句返回不止一列数据时,就需要使用游标(Cursor)来一次指出一列数据。

     关于Java中的嵌入式SQL语句的使用,我们将在以后详细介绍。

     为了实现JDBC与SQL的一致性,我们要求用户系统支持ANSI
SQL-92, SQL_92是目前的国 际标准,它定义了三个功能水平:Entry,
Intermediate, Full。 在这里我们要求至少Entry 水平以上。ANSI
SQL-92 在ANSI
1989模块式语言,嵌入式SQL,直接调用等特点的基础上又增
加了以下内容:

     ·增加了一些数据类型,如日期、时间等;

     ·为满足客户机/服务器结构的需要,提供与各类数据库环境连接功能;

     ·支持动态SQL(我们将在以后章节中介绍);

     ·在Full水平上,为结果集合的获取提供可滚动的游标;

     ·在Intermediate 和Full 水平上,提供外部连接功能。


以上我们初步了解了有关关系数据库和SQL语言的基本知识,下面就可以学习JD-BC的编
程接口。

                    第三章 JDBC概述

     Java
语言所具有的鲁棒性,安全性,可移植性,容易理解,方便使用并且可以自动下载等
特点,使得它成为发展数据库应用的极好的语言基础,它较之C++,Smalltalk,Cobol等语言有

很多的优势,并提供了更大的应用范围和应用的多样化。因此,许多用户和厂家都在寻找Jav
a
语言数据库应用的方便快捷的途径。


一个独立于数据库管理系统(DBMS-independent)的用户界面是实现DBMS应用的广泛性和
多样化的最快的方式,Java语言应用程序的开发者们正是基于此观点,提出了一般的SQL数据

库访问结构,它在不同的数据库功能模块的层次上提供了一个统一的用户界面。这使得程序
员可以在简单的数据库界面中进行写操作,使得独立于DBMS的Java应用程序开发工具和成果
成为可能,同时也提供了多样化的数据库连接方式。

     这就是API JDBC(Java Database
Connectivity),它是支持基本SQL功能的一个一般
的低水平的应用程序编程接口(API),当然它也支持高水平的数据库访问工具及API。我们知

道,Microsoft的 ODBC用户界面是建立在X/Open SQL CLI(Call level
Interface)基础之 上的,同样JDBC也是建立在此基础上的,它为X/Open
SQL CLI中定义的基本的抽象的概念提供
了一个友好的Java界面。ODBC是一个C的界面,因此不能直接应用到Java中,而JDBC的API则?
?
方便在ODBC基础之上实现。下面我们来详细介绍有关JDBC的内容。

                      3.1 JDBC 的特点

     本节中,我们将具体介绍JDBC API的特点及实现功能。

                   一、在SQL水平上的API


JDBC是Java语言的SQL界面,也就是说其中心在于执行列的SQL声明和取回结果。在此基
础上定义更高层次的API,其中的实例都直接将基本表与Java中的类相对应,并且提供了更多

的一般性询问的语义树表示,以及Java语言的嵌入式SQL语法。

                    二、与SQL的一致性


一般数据库系统在很大范围内支持SQL的语义语法,但通常他们在许多更强的功能例如外
部连接及过程存储等方面彼此不能一致,而现在的标准SQL扩展能包含更多的功能。


1.JDBC允许使用从属于DBMS的系统的任何询问语句,因此一个应用程序可以使用尽可能
的SQ
L功能,尽管在一些DBMS中可能会出现错误。实际上,一个应用程序的询问甚至不必是SQL形?
?
的,它可以是SQL的特定引出形式,例如为特定DBMS而提供的文件或是图片查询。

     2. 一般认为ANSI SQL 92 Entry
Level功能比较完备,并且是被广泛支持的,所以为 了使J DBC 与
SQL一致,我们要求用户使用至少ANSI SQL 92 Entry
Level以上版本,这样就给那
些要求广泛的可携带性的应用程序提供了至少共同命名的保证。

               三、在一般数据库接口之上实现

     必须保证JDBC SQL API能在普通的SQL
API上实现,特别是ODBC。这种要求使部分详细
说明增加了色彩,尤其是在处理OUT参数及大的数据块的处理上。

           四、提供与其它Java系统一致的Java界面


JDBC提供与其它Java系统一致的Ja-va界面,这对于语言来说有着非常重要而且积极的意
义。在很大程度上这意味着语言与标准运行系统被认为是一致的,简单化的并且是功能强大
的。也就是说它提供了一种建立在已有的核心Java类库基础上并增强其功能
特性的Java数据库用户界面。

                       五、简单易行

     JDBC
的基本API在最大可能上简单化,这也正体现了大多数情况下我们采用简单的结构
来实现特定的任务而不是提供复杂的结构。JDBC
的API以后还将不断扩展以实现更完善的功 能。

             六、使用健壮、静态的通用数据类型

     Java公司提出JDBC
API使用健壮的数据类型,并且很多的类型信息采用静态表达,这就使
得编译时能捕获更多的错误。但是,由于SQL本身是动态数据类型,所以在动态运行时我们就

可能会碰到类型不匹配的问题,例如程序员希望一个SELECT语句返回整数型结果而数据库返

回的是字符串类型。尽管这样,我们仍希望允许程序员在编译时提出他们所期望的数据类型
,这样就能尽可能的进行静态检查。同时,在需要时,也支持动态数据类型的界面(我们将在?
院笳陆谥邢晗附樯?)。

                   七、使一般情形简单化

     JDBC使得一般情形简单化,而不常见的情形成为可执行的。

     一般情形是程序员执行一个简单的没有参数的SQL声明(例如SELECT
,IN-SERT,UPDATE
或DELETE),然后获得简单的结果数据列,带有参数IN的SQL声明也属于一般情形。

     另外一些情况不是那么常见,但仍然很重要,这就是当程序员使用带INOUT
或OUT参数的S
QL声明以及支持读写多兆字节的SQL声明等,更特殊的情形如一个SQL声明返回多个结果集合




一般来说元数据的获取(例如发现结果集合,或者列举数据库中的过程等)相比较来说使用较
为少一些,并且大多数情况下都是熟练的程序员使用或是作为系统建造工具。在本书的后面
部分我们将与动态数据获取等内容一起介绍元数据函数,一般的编程设计者可以略过这一部
分。

                   八、多种方法,多种功能


一种界面类型使用少量的过程,并且提供大量的控制标志作为这些过程的中项,这样就可
以用他们来对不同的操作提供更为广阔的范围。一般来说,Java的核心的类都使用不同的方
法来完成相同的功能,在JDBC中也采用了这种思想,也就是用多种方法而不是带有标志项的
多目的的方法。

     (未完待续)








--



日出东方,唯我不败;
    天上地下,唯我独尊。

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.72]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店