国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

ASE12.5數據庫內嵌JAVA開發指南

2024-07-21 02:08:06
字體:
來源:轉載
供稿:網友

ase12.5數據庫內嵌java開發指南


作者:翁彥

時間:2004年4月

平臺

windows 2000 server

ase 12.5 developer edtion for nt

聲明

歡迎轉載,請保留本申明信息

[email protected]


    用過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 編譯,打包,安裝后?,F在,我們就可以直接使用這個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)

 

    通過以上簡單的例子,希望能夠對大家實際的系統開發有所幫助。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 即墨市| 白朗县| 元氏县| 同德县| 彭阳县| 仪陇县| 宁阳县| 五寨县| 沾化县| 理塘县| 海阳市| 温泉县| 聂荣县| 福海县| 资溪县| 新密市| 五指山市| 尖扎县| 南川市| 筠连县| 明星| 庄浪县| 博野县| 嘉祥县| 永清县| 宁陵县| 大宁县| 海晏县| 佛冈县| 民丰县| 怀安县| 宿松县| 静安区| 长葛市| 鲁山县| 屏边| 襄樊市| 太仆寺旗| 甘泉县| 延庆县| 达拉特旗|