分享
 
 
 

ASE12.5数据库内嵌JAVA开发指南

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

ASE12.5数据库内嵌JAVA开发指南

作者:翁彦

时间:2004年4月

平台

Windows 2000 Server

ASE 12.5 developer edtion for NT

声明

欢迎转载,请保留本申明信息

enhydraboy@yahoo.com.cn

用过ORACLE 8i的朋友,知道ORACLE 8i中,可以通过loadjava命令将java对象内嵌在数据库里面。这样可以使得PL/SQL程序可以调用这些JAVA对象。这个技术的好处在于:

1 扩展了PL/SQL程序的功能,我们知道,PL/SQL是扩展了SQL命令,可以进行逻辑运算操作,但是有了java语言的支持,那可以做的事情将更多

2 可以为我们提供一种新型的数据类型。现在的RDBMS都支持自定义类型,和对象类型。但是自定义的类型只和某种数据库相关,在不同数据库间进行迁移的时候,这些数据类型显然是不能迁移的(你必须要自己在新的数据库中去实现这部分,也许你该改动的代码将会是不可预计的)。这使得我们对于想使用对象数据类型不得不顾虑重重,甚至放弃它。而JAVA可以帮助我们彻底打消顾虑。

下面,我就简单地谈一谈SYBASE 12.5中是如何应用的。

1 首先,要先允许数据库支持JAVA的特性。

sp_configure “enable java”,1

1> sp_configure "enable java",1

2> go

Parameter Name Default Memory Used Config Value

Run Value Unit Type

------------------------------ ----------- ----------- ------------

----------- -------------------- ----------

enable java 0 0 1

0 switch static

(1 row affected)

Configuration option changed. Since the option is static, Adaptive Server must

be rebooted in order for the change to take effect.

Changing the value of 'enable java' to '1' increases the amount of memory ASE

uses by 6482 K.

(return status = 0)

2 重新启动Sybase数据库。NT下面,可以通过控制面板->管理工具->服务来重启。

3 好了,下面,我们来简单地开发一个JAVA程序,然后看看sybase的T-SQL是如何调用的。

java程序

package sam;

public class HelloWorld

{

public String Hello()

{

return "HelloWorld";

}

}

4 编译并且打包上面这个java程序。

javac sam/*.java

jar cf0 sam.jar sam\*.class

5 安装java包到数据库中,用sybase提供的instjava程序,这个程序会随着sybase安装的时候,一起安装的。要说明的是,NT和unix命令名称不一样。unix下是installjava ,Windows NT下是instjava 。

instjava -f "E:\工作目录\Sybase\java\sam.jar" -new -j -S sam -U sa -P -D Northwind

6 在Sybase的Transaction-SQL中调用Hello方法

1> select (new sam.HelloWorld())>>Hello()

2> go

--------------------------------------------------

HelloWorld

我们可以看到,sybase基本采用了类似java语法,因此,java程序员应该很容易使用。

7 下面,我再谈谈第二个特性(java对象类型)的开发应用。

package sam;

public class Address implements java.io.Serializable

{

private String varCity;

private String varCountry;

private String varZip;

private String varHome;

public Address(String mCity,String mCountry,String mZip,String mHome)

{

varCity=mCity;

varCountry=mCountry;

varZip=mZip ;

varHome=mHome;

}

public String City()

{

return varCity;

}

public String Country()

{

return varCountry;

}

public String HomeAddress()

{

return varHome;

}

public String Zip()

{

return varZip;

}

public void ModifyAddress(String mCity,String mCountry,String mZip,String mHome)

{

varCity=mCity;

varCountry=mCountry;

varZip=mZip ;

varHome=mHome;

}

}

8 编译,打包,安装后。现在,我们就可以直接使用这个java对象类型。

建一个表,数据库字段类型是一个java类。

注意:可以作为数据库字段类型的java类,必须implements了java.io.serializable接口。

1> create table emps (

2> empno int,

3> name varchar(30),

4> addr sam.Address default new sam.Address

5> ('Not known', '','','')

6> )

7> go

1> alter table emps add constraint pk_emps primary key(empno)

2> go

操作并使用java类型的字段。

1> insert into emps(empno,name) values(1,'TOM')

2> go

(1 row affected)

1> insert into emps values(2,'BOB',

2> new sam.Address('Shanghai','china','200132','1169,nanjin road'))

3> go

(1 row affected)

1> begin

2> declare @A sam.Address

3> select @A=addr from emps where empno=2

4> select @A>>Country(),@A>>City(),@A>>HomeAddress(),@A>>Zip()

5> end

6> go

--------------------------------------------------

--------------------------------------------------

--------------------------------------------------

--------------------------------------------------

china

Shanghai

1169,nanjin road

200132

(1 row affected)

通过以上简单的例子,希望能够对大家实际的系统开发有所帮助。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有