Java 版 (精华区)

发信人: kaola (不是我不小心!), 信区: Java
标  题: SQLJ简介 
发信站: 哈工大紫丁香 (2001年01月13日13:25:20 星期六), 站内信件


SQL简介        作者:周刚       发布日期:2000/07/15
文章摘要:
  SQLJ是一个与Java编程语言紧密集成的嵌入式SQL,Oracle8i的重要的特性之一就是
全面和高效地支持SQLJ。
----------------------------------------------------------------------------
----
正文:
SQLJ简介
  SQLJ是一个与Java编程语言紧密集成的嵌入式SQL的版本,这里"嵌入式SQL"是用来
在其宿主通用 编程语言如C、C++、Java、Ada和COBOL)中调用SQL语句。在一个嵌入
式SQL程序中,SQL语句可以像其宿主语言中的程序构造一样得到支持。当然,C和C++
也可以通过宿主语言函数调用,即通过开放数据库连接接口(ODBC)调用SQL语句。与此
相似,Java程序可以通过Java数据库连接(JDBC)方法调用来调用SQL语句。但是,我们
会看到,这一类的函数调用接口较之嵌入式SQL接口是一个水平相当低的程序接口。因为
这时的SQL语句是作为字符串参数传送给函数而不是直接在宿主语言中嵌入代码的。
  Oracle8i是Oracle关系型数据库管理系统(Oracle RDBMS)的最新版本,在此版本
中,特别强调了Java编程语言和Internet/Intranet数据库应用程序的开发。Oracle8i的
重要的特性之一就是全面和高效地支持SQLJ。与Oracle8一样,Oracle8i不仅提供对关系
型数据库处理的强有力的支持,同时还支持一些对象-关系型结构,如集合类型、用户定
义类型和对象类型。
  SQLJ由一系列定义了SQL与Java之间相互作用的子句和程序扩充组成。SQLJ是在Jav
a编程语言中静态嵌入式SQL,换句话说,一个SQLJ程序是一个包含静态嵌入式SQL语句的
Java程序。请注意,在静态嵌入式SQL中,所有嵌入到程序中的SQL语句在编译时都是已
知的。而在动态嵌入式SQL中,至少有一些SQL语句是等到运行时才被确定的。SQLJ通过
这种静态嵌入式SQL模型完善了JDBC动态嵌入式SQL模型,这是因为JDBC只提供给Java一
个动态嵌入式SQL接口,而SQLJ提供了一个静态嵌入式SQL接口。从此,通过使用SQLJ,
Java程序员们在Java和SQL之间有了两种不同的程序接口:JDBC和SQLJ。其他编程语言,
诸如C、C++、FORTRAN、COBOL和Ada基本上使用同一种嵌入式SQL,而SQLJ作为一个与
ANSI标准多少有些不同的嵌入式SQL一直为Java所专用。这就引出了一个问题:为什么唯
独Java有其自己的嵌入式SQL,而其他的编程语言共用一个嵌入式SQL?原因之一是SQLJ
与Java的紧密耦合,特别是Java类可在SQL表中作为字段类型使用。还有,SQLJ提供了游
标结构的一种强类型版本,又称为迭代器,这种迭代器结构巧妙地集成到Java语言中,
每一个迭代器是一个Java类。同时要注意的是,与SQLJ不同,其他编程语言的嵌入式SQ
L同时包括静态和动态SQL构造。
  SQLJ作为一个新的标准的出现是多个厂商共同努力以求在Java程序中提供对静态嵌
入式SQL支持的结果。正如我们所看到的,一个"纯"SQLJ程序是静态的,因为所有的SQL
语句都必须在编译以前确定。但是,在一个SQLJ语句之内包含JDBC调用会使该程序成为
动态的,因为程序可将SQL语句组织成一个字符串,然后将该字符串传送给JDBC方法去执
行。SQLJ可用来在JServer环境下执行存储过程、触发器和类,也可用于Enterprise Ja
vaBeans和CORBA.
SQLJ由一系列子句组成,这些子句扩展了Java程序。语言的标准说明是一个联合说明,
它由包括IBM、Compaq/Tandem、JavaSoft、Oracle、Sybase和Informix在内的主要数据
库工具厂商和数据库厂商所联合支持。SQLJ提供了在访问数据库的客户端和中间件以及
在利用Java的数据服务器端开发应用程序的方法。SQLJ应用程序是可移植的,并且可以
使用标准JDBC驱动程序与多厂商的数据库进行通信。
  当编写一个SQLJ程序(源代码)时,所编写的是一个Java程序并按一定的语法规则
嵌入式SQL语句,这套语法规则说明了怎样将SQL语句嵌入到Java源代码中。然后运行一
个SQLJ翻译器将SQLJ程序转换为一个标准Java程序。一个Oracle SQLJ翻译器在原理上与
其他Oracle 嵌入式SQL预编译器类似。SQLJ翻译器完成下列工作:
* 对嵌入式SQL构造进行语法检查。
* Java和SQL数据类型检查。
* 模式检查。
  翻译时,SQL翻译器用SQLJ运行时库中的调用来替代嵌入式SQLJ语句,该运行时库真
正实现SQL操作。这样翻译的结果是得到一个可使用任何Java翻译器进行编译的Java源程
序。一旦Java源程序被编译,Java执行程序就可在任何数据库上运行。
SQLJ运行环境由纯Java实现的小SQLJ运行时库(小,意指其中包括少量的代码)组成,
该运行时库转而调用相应数据库的JDBC驱动程序。
  一个SQLJ程序可以在多种环境下运行。所编写的SQLJ程序可以在客户端进行,不管
是在瘦客户端如Web浏览器和网络计算机上,还是在一个工作站或PC上。由于这种位置的
透明性,使得用户可以很方便地将SQLJ程序从一个地方移植到另一个地方或从一个系统
移植到另一个系统。
 
----------------------------------------------------------------------------
----
我是:  读者  出版商  销售商
读者评价:
    评论:
[查看他人对本书的看法]
推 荐 给 朋 友
您的称呼:     您的昵称:
您的Email:     您朋友的Email:
(以下是预设的信件内容,可根据您的需要修改)
近来好吗?
我在网上浏览中国互动出版网时,看到对你有用的文章(http://www.china-pub.com/c
omputers/emook/0003/info.htm),特推荐给你,希望对你有所帮助。
[关闭此窗口]
Copyright 1999-2000 China-Pub.com Corporation.All rights reserved.
(版权信息)
--
               我怕水,我怕谁?

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.247.254]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.471毫秒