分享
 
 
 

sqlj

王朝百科·作者佚名  2010-04-21
窄屏简体版  字體: |||超大  

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关系型数据库管理系统(OracleRDBMS)的最新版本,在此版本中,特别强调了Java编程语言和Internet/Intranet数据库应用程序的开发。Oracle8i的重要的特性之一就是全面和高效地支持SQLJ。与Oracle8一样,Oracle8i不仅提供对关系型数据库处理的强有力的支持,同时还支持一些对象-关系型结构,如集合类型、用户定义类型和对象类型。

SQLJ由一系列定义了SQL与Java之间相互作用的子句和程序扩充组成。SQLJ是在Java编程语言中静态嵌入式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不同,其他编程语言的嵌入式SQL同时包括静态和动态SQL构造。

SQLJ作为一个新的标准的出现是多个厂商共同努力以求在Java程序中提供对静态嵌入式SQL支持的结果。正如我们所看到的,一个"纯"SQLJ程序是静态的,因为所有的SQL语句都必须在编译以前确定。但是,在一个SQLJ语句之内包含JDBC调用会使该程序成为动态的,因为程序可将SQL语句组织成一个字符串,然后将该字符串传送给JDBC方法去执行。SQLJ可用来在JServer环境下执行存储过程、触发器和类,也可用于Enterprise JavaBeans和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程序从一个地方移植到另一个地方或从一个系统移植到另一个系统。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有