ASE12.5数据库内嵌JAVA开发指南
发表于:2007-07-02来源:作者:点击数:
标签:
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
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:\工作目录 ybase\java am.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)
通过以上简单的例子,希望能够对大家实际的系统开发有所帮助。
原文转自:http://www.ltesting.net