スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
SQLJにはCONNECT文及びDISCONNECT文がないため,HiRDBサーバとの接続,切り離しはJavaの命令で記述します。
HiRDBサーバと接続する場合,接続コンテキストを使用して次のように記述します。
接続コンテキストのクラスを定義します。クラス名はJavaの識別子です。定義したクラスは,sqlj.runtime.ConnectionContextを継承しています。
#sql 修飾子 context クラス名 ; |
宣言したクラスを使用して,接続コンテキストを宣言します(Javaの変数宣言として宣言します)。接続コンテキストはJavaの識別子です。
修飾子 クラス名 接続コンテキスト ; |
new演算子で接続コンテキストのオブジェクトを生成します。このとき,HiRDBサーバへ接続されます。接続パラメタには,接続先のHiRDBサーバ,ポート番号,認可識別子,及びパスワードを,JDBCと同じ形式で記述します。
接続コンテキスト = new クラス名(接続パラメタ) ; |
ネイティブインタフェース版を使用した場合,次の3種類の接続方法があります。
各接続方法の説明を次に示します。
接続コンテキスト = new クラス名(接続パラメタ); |
接続コンテキスト = new クラス名(); |
#sql context Ctx;
String Userid=new String("user1");
String Passwd=new String("puser1");
String Host=new String("HiRDB_SV");
short port=22000;
Ctx con = new Ctx(:Userid,:Passwd,:Host,:port);
|
#sql [接続コンテキスト]{CONNECT USER :埋込み変数 USING :埋込み変数};
又は
#sql [接続コンテキスト]{CONNECT :埋込み変数 IDENTIFIED BY :埋込み変数};
|
#sql [接続コンテキスト]{CONNECT};
|
#sql context Ctx;
String Userid=new String("user1");
String Passwd=new String("puser1");
Ctx con;
#sql [con] {CONNECT USER :Userid USING :Passwd };
|
接続コンテキスト = new クラス名(接続オブジェクト); |
#sql context Ctx;
java sql.Connection con =
java.sql.DriverManager.getConnection("jdbc:hitachi:PrdbDrive://DBID=22200,
DBHOST=HiRDB_SV","user1","user1");
Ctx ctx = new Ctx(con);
|
HiRDBサーバとの切り離しをする場合は,接続コンテキストのcloseメソッドを呼び出します。なお,再接続用のメソッドはありません。再接続する場合は,オブジェクトを新たに作成します。
接続コンテキスト.close() ; |
接続コンテキストのcloseメソッドを呼び出す例を次に示します。
#sql context DeptContext;
:
{
DeptContext deptCtx = new DeptContext(deptURL,true);
#sql [deptCtx] { DELETE FROM TAB };
deptCtx.close();
}
|
ネイティブインタフェース版を使用した場合,接続テキストのcloseメソッドを呼び出す方法以外に,DISCONNECT文を使用することもできます。
#sql[接続コンテキスト]{DISCONNECT};
|
DISCONNECT文の例を次に示します。
#sql context Ctx;
Ctx con;
#sql[con]{CONNECT};
#sql[con]{DISCONNECT};
|
スタンダードインタフェース版の場合,SQL文に接続コンテキストを明示しないときは,デフォルトの接続コンテキストが指定されたものとみなされます。
デフォルト接続コンテキストを使用する場合は,UAPがあらかじめ接続コンテキストを作成し,その接続コンテキストをデフォルト接続コンテキストとして設定しておく必要があります。一度設定したデフォルト接続コンテキストは,デフォルト接続コンテキストのclose()メソッドを発行するか,又は新たな接続コンテキストをデフォルトの接続コンテキストとして再設定しないかぎり有効です。
デフォルト接続コンテキストは,デフォルト接続コンテキストクラス(JP.co.Hitachi.soft.HiRDB.sqj.runtime.PrdbContext)内の変数に保持されています。
デフォルト接続コンテキストは,次のような異なる引数を持つ,複数のコンストラクタを持っています。
接続先のURL,認可識別子,及びパスワードの指定は,HiRDBのJDBCドライバと同じ形式で記述します。
SQLJでは,接続コンテキスト作成時に接続URLを含むコンストラクタを使用する場合,オートコミットの指定が必要であり,有効にするときはTRUE,無効にするときはFALSEと指定します。
JDBCの接続コンテキストから生成する場合は,オートコミットの設定はJDBCの接続コンテキストの設定を引き継ぎます。
import JP.co.Hitachi.soft.HiRDB.sqj.runtime.PrdbContext;
:
PrdbContext pctx = new PrdbContext(url,user,passwd,autoCommit);
PrdbContext.setDefaultContext(pctx);
|
import JP.co.Hitachi.soft.HiRDB.sqj.runtime.PrdbContext;
:
PrdbContext pctx = new PrdbContext(url,user,passwd,autoCommit);
PrdbContext.setDefaultContext(pctx);
:
pctx.close();
PrdbContext new_pctx = new PrdbContext(url.use,passwd,autoCommit);
PrdbContext.setDefaultContext(new_pctx);
|
JP.co.Hitachi.soft.HiRDB.sqj.runtime.PrdbContext.getDefaultContext();
void print_address(String name) throws SQLException;
{
String telno;
sqlj.runtime.ConnectionContext ctx;
ctx = JP.co.Hitachi.soft.HiRDB.sqj.runtime.PrdbContext.getDefaultContext();
#sql [ctx] { SELECT TELNO INTO :telno
FROM PERSON
WHERE :name = NAME } ;
}
|
ネイティブインタフェース版の場合,デフォルト接続コンテキストクラスはJP.co.Hitachi.soft.HiRDB.pdjpp.runtime.PrdbContext内の変数に保持されています。
デフォルト接続コンテキストクラスは,次の複数のコンストラクタを持ちます。
import JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.PrdbContext;
:
PrdbContext pctx = new PrdbContext();
PrdbContext.setDefaultContext(pctx);
|
デフォルト接続コンテキストの解放と再設定の例を次に示します。
import JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.PrdbContext;
:
PrdbContext pctx = new PrdbContext(user,passwd,host,port);
PrdbContext.setDefaultContext(pctx);
:
pctx.close();
PrdbContext new_pctx = new PrdbContext(user,passwd,host,port);
PrdbContext.setDefaultContext(new_pctx);
|
JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.PrdbContext.getDefaultContext();
デフォルトコンテキストを明示的に指定した場合のコーディング例を次に示します。
void print_address(String name) throws SQLException;
{
String telno;
JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.ConnectionContext ctx;
ctx = JP.co.Hitachi.soft.HiRDB.sqj.runtime.PrdbContext.getDefaultContext();
#sql [ctx] { SELECT TELNO INTO :telno FROM PERSON WHERE :name = NAME } ;
}
|
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.