| Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 - |
目次
索引
![]()
|
| 第2部 APIでのアプリケーション開発 | > 第9章 Java APIのアプリケーション開発 | > 9.3 Java APIの使用方法 | > 9.3.2 データの検索 |
検索した結果をある特定の要素の値で集計して取得したい場合があります。
データの内容を集計するには、setSortメソッドを使用します。prepareSearchメソッドのパラメタであるリターン式に集合関数指定を指定すると、検索した結果が集計されて返却されます。集計処理では、合計値、平均値、最大値、最小値または件数を求めることができます。
条件に一致するデータの内容を集計する場合の流れについて、以下の図に示します。

ShunConnection con = new ShunConnection();
String queryExpression = "/document/base/prefecture == '大阪'";
String returnExpression = "max(/document/base/price/text())"; (1)
String sortExpression = "/document/base/prefecture/text()"; (2)
ShunPreparedStatement pstmt = con.prepareSearch(queryExpression, returnExpression); (3)
pstmt.setSort(sortExpression); (4)
ShunResultSet rs = pstmt.executeSearch(); (5)
while(rs.next()) { (6)
System.out.println("[検索結果] = " + rs.getString()); (6)
}
rs.close(); (7)
pstmt.close(); (7)
con.close(); |
リターン式を作成します。集計を行う場合は、リターン式に集合関数指定を指定します。
リターン式および集合関数指定の詳細については、“B.4 リターン式”を参照してください。
ソート式を作成します。
ソート式の詳細については、“B.5 ソート式”を参照してください。
ShunPreparedStatementオブジェクトの作成は、検索式とリターン式を指定し、prepareSearchメソッドを使用します。
検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。
ソート式の設定は、setSortメソッドを使用します。

ソート式に指定したキーの長さによって返却できるグループの数が決まります。最大グループ数は1000グループです。返信開始番号や返信要求件数に返却可能な最大グループ数を超える値を指定しても、それ以上のデータは返却することができません。返却可能なデータの最大件数は、getReturnableCountメソッドで取得できます。
キーの長さと返却可能なグループ数の目安については、“付録C 定量値”を参照してください。

取得開始位置を指定することにより、続きのデータを取り出すことができます。これにより1000グループ以上のデータを取り出すことができます。詳細については、“9.3.2.8 条件に一致するXML文書を連続して取得する”を参照してください。
検索の実行はexecuteSearchメソッドを使用します。検索した結果としてShunResultSetオブジェクトが作成されます。
検索した結果を取り出す前には、必ずnextメソッドを使用します。nextメソッドは、次のデータが存在する場合はtrueを返し、それ以上データがない場合はfalseを返します。
XML文書を取り出すには、目的に応じて以下のメソッドを使用します。使用可能なメソッドについては以下の表を参照してください。
|
メソッド名 |
機能説明 |
|---|---|
|
getString |
XML文書をStringオブジェクトで取り出します。 |
|
getStringArray |
XML文書をStringオブジェクトの2次元配列で取り出します。 |
|
getStream |
XML文書をInputStreamオブジェクトで取り出します。 |
ShunResultSetオブジェクトとShunPreparedStatementオブジェクトは、使用後にそれぞれのcloseメソッドで必ず解放します。
この処理を実現させるためには、自動生成されたShunsakuアクセスクラスのリターン式に集合関数を指定します。以下に、リターン式に集合関数を指定したShunsakuアクセスクラスとビジネスクラスの記述例を示します。
ShunConnection con = new ShunConnection(); ShunsakuAccessController controller = new ShunsakuAccessController(con); controller.search(key); ShunResultSet resultData = controller.getResultSet(ShunsakuAccessController.SORT_1); controller.close(); con.close(); |
public class ShunsakuAccessController {
:
private ShunPreparedStatement pstmt;
:
} |
public void search(String keys) throws ShunException {
:
queryString = "/document/base/prefecture == ' " + keys + "'"; (a)
returnString = "max(/document/base/price/text())"; (1)(b)
:
getPreparedStatement(queryString, returnString);
:
}
private void getPreparedStatement(String queryString, String returnString) {
:
pstmt = con.preparedSearch(queryString, returnString); (3)
:
} |
public ShunResultSet getResultSet(String sortString) throws ShunException {
return getResultSet(sortString, 1, Integer.MAX_VALUE);
}
public ShunResultSet getResultSet(String sortString,
int position,
int requestCount)
throws ShunException {
:
if(!sortString.equals(SORT_NONE)) {
pstmt.setSort(sortString); (4)
}
:
return pstmt.executeSearch(); (5)
:
} |
ソート式は、対話形式のウィザードで作成し、ソート識別子としてShunsakuアクセスクラスの定数として定義されます。
public class ShunsakuAccessController {
:
public static final String SORT_NONE = ""; (2)
public static final String SORT_1 = "val(/document/base/prefecture/text())"; (2)
:
} |
public void close() throws ShunException {
:
pstmt.close(); (7)
:
} |
目次
索引
![]()
|