Using Cache' Post RDBMS From Mathematica By Java Classes

Junzo SATO

Copyright (c) 2001, Junzo SATO. All rights reserved.

June 7th 2001

Cache' Post RDBMS from InterSystems is an OODB. It possesses data and functions in classes. Because Cache' can export definitions of these classes in Java format, Mathematica is able to use Cache' by J/Link. In this document how to use Cache' database from Mathematica is demonstrated.

Configurations

Cache' database and J/Link library are installed on a remote Windows2000 computer. Mathematica with J/Link is installed on a local machine, which is opening this document.

Establishing J/Link Connection

On a remote computer, the following command should be evaluated.

java com.wolfram.jlink.Install -linkname 1192 -linkmode listen -linkprotocol tcp

The mathlink connection for J/Link is established.

NOTE:
Using two computers is not essential. If the user can install both Cache' and Mathematica in a single machine, simple evaluation
<<JLink`
lnk = InstallJava[ ]
is enough. However, the separation of MathKernel with Cache' server would be effective when the user's platform is not supported by Cache' or when the stability of the computation is required.

[Graphics:Images/CacheJava_gr_1.gif]
[Graphics:Images/CacheJava_gr_2.gif]
[Graphics:Images/CacheJava_gr_3.gif]
[Graphics:Images/CacheJava_gr_4.gif]
[Graphics:Images/CacheJava_gr_5.gif]

Establishing Cache' Connection

ObjectFactory is loaded.

[Graphics:Images/CacheJava_gr_6.gif]
[Graphics:Images/CacheJava_gr_7.gif]

NewObjectFactory[] establishes a connection to the specified namespace in Cache'.

[Graphics:Images/CacheJava_gr_8.gif]
[Graphics:Images/CacheJava_gr_9.gif]

In this example, connection to the namespace "ZIP" which is prepared in Cache' is established.

[Graphics:Images/CacheJava_gr_10.gif]
[Graphics:Images/CacheJava_gr_11.gif]

As the following output shows, the connection between J/Link and Cache' is 'local' inside the remote computer.

[Graphics:Images/CacheJava_gr_12.gif]
Connection -> cn_iptcp:127.0.0.1[1972]:ZIP
Cache' Version -> Cache for Windows NT (Intel) 4.0 (Build 135.1U su) Fri Dec 29 2000 15:45:52 EST
Server Version -> 4.0.0.381

Zip.ZipTable holds zip data and queries.

[Graphics:Images/CacheJava_gr_13.gif]
[Graphics:Images/CacheJava_gr_14.gif]

First record in the Zip.ZipTable is retrieved using an object id.

[Graphics:Images/CacheJava_gr_15.gif]
[Graphics:Images/CacheJava_gr_16.gif]
[Graphics:Images/CacheJava_gr_17.gif]
[Graphics:Images/CacheJava_gr_18.gif]
[Graphics:Images/CacheJava_gr_19.gif]
[Graphics:Images/CacheJava_gr_20.gif]

Fields of the obj are as follows.

[Graphics:Images/CacheJava_gr_21.gif]
[Graphics:Images/CacheJava_gr_22.gif]
[Graphics:Images/CacheJava_gr_23.gif]

Values of the first object are listed.

[Graphics:Images/CacheJava_gr_24.gif]
01101
060  
0600000
–kŠC“¹
ˆÈ‰º‚ÉŒfÚ‚ª‚È‚¢ê‡
ŽD–yŽs’†‰›‹æ
ί¶²ÄÞ³
»¯ÎßÛ¼Á­³µ³¸
²¶Æ¹²»²¶ÞŲÊÞ±²
0
0
0
0
0
0

Query_getTown(zip7)

Compiled query getTown(zip7) in Zip.ZipTable class is accessible from Mathematica. It takes one argument zip7, or zip code with seven digits, and returns corresponding area name.

[Graphics:Images/CacheJava_gr_25.gif]
[Graphics:Images/CacheJava_gr_26.gif]

Information about the result columns is retrieved.

[Graphics:Images/CacheJava_gr_27.gif]
[Graphics:Images/CacheJava_gr_28.gif]
[Graphics:Images/CacheJava_gr_29.gif]
[Graphics:Images/CacheJava_gr_30.gif]
False 1 zip7 zip7 String
False 2 kanjiPref kanjiPref String
False 3 kanjiCity kanjiCity String
False 4 kanjiTown kanjiTown String
False 5 kanaPref kanaPref String
False 6 kanaCity kanaCity String
False 7 kanaTown kanaTown String
[Graphics:Images/CacheJava_gr_31.gif]
[Graphics:Images/CacheJava_gr_32.gif]
[Graphics:Images/CacheJava_gr_33.gif]
[Graphics:Images/CacheJava_gr_34.gif]

Information about parameters of the query is retrieved.

[Graphics:Images/CacheJava_gr_35.gif]
[Graphics:Images/CacheJava_gr_36.gif]
[Graphics:Images/CacheJava_gr_37.gif]
[Graphics:Images/CacheJava_gr_38.gif]
1 paramZip7 String

Query is executed.

[Graphics:Images/CacheJava_gr_39.gif]

Result of the query is shown.

[Graphics:Images/CacheJava_gr_40.gif]
[Graphics:Images/CacheJava_gr_41.gif]
[Graphics:Images/CacheJava_gr_42.gif]
[Graphics:Images/CacheJava_gr_43.gif]

ResultSet is discarded.

[Graphics:Images/CacheJava_gr_44.gif]
[Graphics:Images/CacheJava_gr_45.gif]

Query_getZipCode(kanjiPref, kanjiCity)

The query method getZipCode(kanjiPref, kanjiCity) returns a list of zip7 and kanjiTown.

[Graphics:Images/CacheJava_gr_46.gif]
[Graphics:Images/CacheJava_gr_47.gif]
[Graphics:Images/CacheJava_gr_48.gif]
[Graphics:Images/CacheJava_gr_49.gif]
[Graphics:Images/CacheJava_gr_50.gif]
False 1 zip7 zip7 String
False 2 kanjiTown kanjiTown String
[Graphics:Images/CacheJava_gr_51.gif]
[Graphics:Images/CacheJava_gr_52.gif]
[Graphics:Images/CacheJava_gr_53.gif]
[Graphics:Images/CacheJava_gr_54.gif]
[Graphics:Images/CacheJava_gr_55.gif]
1 paramKanjiPref String
2 paramKanjiCity String
[Graphics:Images/CacheJava_gr_56.gif]
[Graphics:Images/CacheJava_gr_57.gif]
[Graphics:Images/CacheJava_gr_58.gif]
[Graphics:Images/CacheJava_gr_59.gif]
[Graphics:Images/CacheJava_gr_60.gif]
[Graphics:Images/CacheJava_gr_61.gif]
[Graphics:Images/CacheJava_gr_62.gif]
[Graphics:Images/CacheJava_gr_63.gif]
[Graphics:Images/CacheJava_gr_64.gif]
[Graphics:Images/CacheJava_gr_65.gif]
[Graphics:Images/CacheJava_gr_66.gif]
[Graphics:Images/CacheJava_gr_67.gif]
[Graphics:Images/CacheJava_gr_68.gif]
[Graphics:Images/CacheJava_gr_69.gif]
[Graphics:Images/CacheJava_gr_70.gif]
[Graphics:Images/CacheJava_gr_71.gif]
[Graphics:Images/CacheJava_gr_72.gif]
[Graphics:Images/CacheJava_gr_73.gif]
[Graphics:Images/CacheJava_gr_74.gif]
[Graphics:Images/CacheJava_gr_75.gif]
[Graphics:Images/CacheJava_gr_76.gif]
[Graphics:Images/CacheJava_gr_77.gif]
[Graphics:Images/CacheJava_gr_78.gif]
[Graphics:Images/CacheJava_gr_79.gif]
[Graphics:Images/CacheJava_gr_80.gif]
[Graphics:Images/CacheJava_gr_81.gif]
[Graphics:Images/CacheJava_gr_82.gif]
[Graphics:Images/CacheJava_gr_83.gif]
[Graphics:Images/CacheJava_gr_84.gif]
[Graphics:Images/CacheJava_gr_85.gif]
[Graphics:Images/CacheJava_gr_86.gif]
[Graphics:Images/CacheJava_gr_87.gif]
[Graphics:Images/CacheJava_gr_88.gif]
[Graphics:Images/CacheJava_gr_89.gif]
[Graphics:Images/CacheJava_gr_90.gif]
[Graphics:Images/CacheJava_gr_91.gif]
[Graphics:Images/CacheJava_gr_92.gif]
[Graphics:Images/CacheJava_gr_93.gif]
[Graphics:Images/CacheJava_gr_94.gif]
[Graphics:Images/CacheJava_gr_95.gif]
[Graphics:Images/CacheJava_gr_96.gif]
[Graphics:Images/CacheJava_gr_97.gif]
[Graphics:Images/CacheJava_gr_98.gif]
[Graphics:Images/CacheJava_gr_99.gif]
[Graphics:Images/CacheJava_gr_100.gif]
[Graphics:Images/CacheJava_gr_101.gif]
[Graphics:Images/CacheJava_gr_102.gif]
[Graphics:Images/CacheJava_gr_103.gif]
[Graphics:Images/CacheJava_gr_104.gif]
[Graphics:Images/CacheJava_gr_105.gif]

Dynamic SQL

Instead of generating precompiled queries in Cache' classes, it is possible to use a dynamic SQL command.

[Graphics:Images/CacheJava_gr_106.gif]
[Graphics:Images/CacheJava_gr_107.gif]

The ResultSet object is created.

[Graphics:Images/CacheJava_gr_108.gif]
[Graphics:Images/CacheJava_gr_109.gif]

Information about resulting columns is shown.

[Graphics:Images/CacheJava_gr_110.gif]
[Graphics:Images/CacheJava_gr_111.gif]
[Graphics:Images/CacheJava_gr_112.gif]
True 1 ID ID int
False 2 zip7 zip7 String
False 3 kanjiPref kanjiPref String
False 4 kanjiCity kanjiCity String
False 5 kanjiTown kanjiTown String
[Graphics:Images/CacheJava_gr_113.gif]
[Graphics:Images/CacheJava_gr_114.gif]

There is nothing different in executing squery and receiving its result with precompiled query.

[Graphics:Images/CacheJava_gr_115.gif]
[Graphics:Images/CacheJava_gr_116.gif]
[Graphics:Images/CacheJava_gr_117.gif]
[Graphics:Images/CacheJava_gr_118.gif]
[Graphics:Images/CacheJava_gr_119.gif]
[Graphics:Images/CacheJava_gr_120.gif]
[Graphics:Images/CacheJava_gr_121.gif]
[Graphics:Images/CacheJava_gr_122.gif]
[Graphics:Images/CacheJava_gr_123.gif]
[Graphics:Images/CacheJava_gr_124.gif]
[Graphics:Images/CacheJava_gr_125.gif]
[Graphics:Images/CacheJava_gr_126.gif]
[Graphics:Images/CacheJava_gr_127.gif]
[Graphics:Images/CacheJava_gr_128.gif]
[Graphics:Images/CacheJava_gr_129.gif]
[Graphics:Images/CacheJava_gr_130.gif]
[Graphics:Images/CacheJava_gr_131.gif]
[Graphics:Images/CacheJava_gr_132.gif]
[Graphics:Images/CacheJava_gr_133.gif]
[Graphics:Images/CacheJava_gr_134.gif]
[Graphics:Images/CacheJava_gr_135.gif]
[Graphics:Images/CacheJava_gr_136.gif]
[Graphics:Images/CacheJava_gr_137.gif]
[Graphics:Images/CacheJava_gr_138.gif]
[Graphics:Images/CacheJava_gr_139.gif]
[Graphics:Images/CacheJava_gr_140.gif]
[Graphics:Images/CacheJava_gr_141.gif]
[Graphics:Images/CacheJava_gr_142.gif]
[Graphics:Images/CacheJava_gr_143.gif]
[Graphics:Images/CacheJava_gr_144.gif]
[Graphics:Images/CacheJava_gr_145.gif]
[Graphics:Images/CacheJava_gr_146.gif]
[Graphics:Images/CacheJava_gr_147.gif]
[Graphics:Images/CacheJava_gr_148.gif]
[Graphics:Images/CacheJava_gr_149.gif]
[Graphics:Images/CacheJava_gr_150.gif]
[Graphics:Images/CacheJava_gr_151.gif]
[Graphics:Images/CacheJava_gr_152.gif]
[Graphics:Images/CacheJava_gr_153.gif]
[Graphics:Images/CacheJava_gr_154.gif]
[Graphics:Images/CacheJava_gr_155.gif]
[Graphics:Images/CacheJava_gr_156.gif]
[Graphics:Images/CacheJava_gr_157.gif]
[Graphics:Images/CacheJava_gr_158.gif]
[Graphics:Images/CacheJava_gr_159.gif]
[Graphics:Images/CacheJava_gr_160.gif]
[Graphics:Images/CacheJava_gr_161.gif]
[Graphics:Images/CacheJava_gr_162.gif]
[Graphics:Images/CacheJava_gr_163.gif]
[Graphics:Images/CacheJava_gr_164.gif]
[Graphics:Images/CacheJava_gr_165.gif]
[Graphics:Images/CacheJava_gr_166.gif]
[Graphics:Images/CacheJava_gr_167.gif]
[Graphics:Images/CacheJava_gr_168.gif]
[Graphics:Images/CacheJava_gr_169.gif]
[Graphics:Images/CacheJava_gr_170.gif]
[Graphics:Images/CacheJava_gr_171.gif]
[Graphics:Images/CacheJava_gr_172.gif]
[Graphics:Images/CacheJava_gr_173.gif]
[Graphics:Images/CacheJava_gr_174.gif]
[Graphics:Images/CacheJava_gr_175.gif]
[Graphics:Images/CacheJava_gr_176.gif]
[Graphics:Images/CacheJava_gr_177.gif]
[Graphics:Images/CacheJava_gr_178.gif]
[Graphics:Images/CacheJava_gr_179.gif]
[Graphics:Images/CacheJava_gr_180.gif]
[Graphics:Images/CacheJava_gr_181.gif]
[Graphics:Images/CacheJava_gr_182.gif]
[Graphics:Images/CacheJava_gr_183.gif]
[Graphics:Images/CacheJava_gr_184.gif]
[Graphics:Images/CacheJava_gr_185.gif]
[Graphics:Images/CacheJava_gr_186.gif]
[Graphics:Images/CacheJava_gr_187.gif]
[Graphics:Images/CacheJava_gr_188.gif]
[Graphics:Images/CacheJava_gr_189.gif]
[Graphics:Images/CacheJava_gr_190.gif]
[Graphics:Images/CacheJava_gr_191.gif]
[Graphics:Images/CacheJava_gr_192.gif]
[Graphics:Images/CacheJava_gr_193.gif]
[Graphics:Images/CacheJava_gr_194.gif]
[Graphics:Images/CacheJava_gr_195.gif]
[Graphics:Images/CacheJava_gr_196.gif]
[Graphics:Images/CacheJava_gr_197.gif]
[Graphics:Images/CacheJava_gr_198.gif]
[Graphics:Images/CacheJava_gr_199.gif]
[Graphics:Images/CacheJava_gr_200.gif]
[Graphics:Images/CacheJava_gr_201.gif]
[Graphics:Images/CacheJava_gr_202.gif]
[Graphics:Images/CacheJava_gr_203.gif]
[Graphics:Images/CacheJava_gr_204.gif]
[Graphics:Images/CacheJava_gr_205.gif]
[Graphics:Images/CacheJava_gr_206.gif]
[Graphics:Images/CacheJava_gr_207.gif]
[Graphics:Images/CacheJava_gr_208.gif]
[Graphics:Images/CacheJava_gr_209.gif]
[Graphics:Images/CacheJava_gr_210.gif]
[Graphics:Images/CacheJava_gr_211.gif]
[Graphics:Images/CacheJava_gr_212.gif]
[Graphics:Images/CacheJava_gr_213.gif]
[Graphics:Images/CacheJava_gr_214.gif]
[Graphics:Images/CacheJava_gr_215.gif]
[Graphics:Images/CacheJava_gr_216.gif]
[Graphics:Images/CacheJava_gr_217.gif]
[Graphics:Images/CacheJava_gr_218.gif]
[Graphics:Images/CacheJava_gr_219.gif]
[Graphics:Images/CacheJava_gr_220.gif]
[Graphics:Images/CacheJava_gr_221.gif]
[Graphics:Images/CacheJava_gr_222.gif]
[Graphics:Images/CacheJava_gr_223.gif]
[Graphics:Images/CacheJava_gr_224.gif]
[Graphics:Images/CacheJava_gr_225.gif]

Closing Cache' Connection

Connection to the namespace ZIP is closed.

[Graphics:Images/CacheJava_gr_226.gif]
[Graphics:Images/CacheJava_gr_227.gif]


Converted by Mathematica      June 7, 2001