本文为iihero原创,如若转载,请务必注明出处。

 

或者直接使用命令行:

D:/ASE150>instjava-D iihero  -S SEANLAPTOP

-fE:/MyDocument/MYBOOKS/ASE/code/JavaSQL/Point.jar-update -j"Point" -Usa-P

其中-D指定目标数据库,-S指定服务名,-f指定已经编译好的java包,-j指定该包在数据库中的包名,-U指定连接数据库的用户名,-P指定密码。

 

一、面向对象应用的实际效果

D:/ASE150>isql-Uspring -Pspring1

1> use iihero

2> go

创建含对象类型Point列的表:

1> createtable testpoint(id int primary key, p Point)

2> go

使用对象特性插入数据并查询:

1> insertinto testpoint values (1, new Point(1.0, 1.0))

2> insertinto testpoint values (2, new Point(5.0, 4.0))

3> insertinto testpoint values (3, new Point(6.0, 13.0))

4> go

(1 row affected)

(1 row affected)

(1 row affected)

1> select *from testpoint

2> go

 id         p

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

           1 (1.0, 1.0)

           2 (5.0, 4.0)

           3 (6.0, 13.0)

(3 rowsaffected)

直接取属性值:

1> select id,p>>_x, p>>_y from testpoint

2> go

 id

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

           1                    1.000000                    1.000000

           2                    5.000000                    4.000000

           3                    6.000000                   13.000000

 

(3 rowsaffected)

查询两点间的距离:

1> selecta.id, b.id, Point.distance(a.p, b.p) from testpoint a, testpoint b whe

re a.id

2> go

 id         id

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

           1           2                    5.000000

           1           3                   13.000000

           2           3                    9.055385

 

(3 rowsaffected)

 

以距离作为条件查询点(查询两点间距离小于6.0的点对)

1> selecta.id, b.id from testpoint a, testpoint b where Point.distance(a.p, b.p

) b.id

2> go

 id         id

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

 2          1

(1 row affected)

二、总结

在到ASE数据库服务器内部,它对Java类作了如下映射:

l        select出对象列的值,就是Java对象的toString()值。

l        静态方法可以直接在select语句里当作函数进行调用,如上例中的Point.distance()方法

l        直接可以取类的成员值,如果那个成员是公有成员,并且有相应的SQL类型映射,如上例中的p>>_x,p>>_y,使用”>>”操作符来提取。

按照上述原理,用户完全使用内置的Java包实现非常复杂的逻辑,然后在SQL语句中直接加以利用。尤其是那种接近于面向对象数据库的应用。

总之,使用内置Java支持对对象类型的存取,是一种很直观易用的方法,也便于用户进行扩充。从这个角度来看,Sybase ASE也可以算是支持面向对象的数据存取了。

 


01-20 23:25