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メソッドを使用します。
データをソートして取得する場合の流れについて、以下の図に示します。
ソートを行う場合には、検索条件に一致したすべてのXML文書を参照してソート処理を行います。検索式には、結果件数が適正な値となるような条件を指定し、ソート対象のデータを絞ることが応答性能をよくするポイントです。ソートを実施する前に検索条件に一致したXML文書の件数を調べるには、setRequestメソッドの返信要求件数に0を指定します。
ShunConnection con = new ShunConnection(); String queryExpression = "/document/base/prefecture == '大阪'"; String returnExpression = "/document/base/name, /document/base/price"; String sortExpression = "val(/document/base/price/text()) DESC"; (1) ShunPreparedStatement pstmt = con.prepareSearch(queryExpression, returnExpression); (2) pstmt.setSort(sortExpression); (3) ShunResultSet rs = pstmt.executeSearch(); (4) while(rs.next()) { (5) System.out.println("[検索結果] = " + rs.getString()); (5) } rs.close(); (6) pstmt.close(); (6) con.close(); |
ソート式を作成します。
ソート式の詳細は、“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オブジェクトで取り出します。 |
備考.getStringArrayメソッドは、検索した結果をテキスト形式で取り出す場合に有効です。
検索した結果とともにデータを一意に識別するレコードIDをgetRecordIDメソッドで取得できます。レコードIDは、対応するXML文書の全体を取り出したり、削除したりする場合に使用します。
ShunResultSetオブジェクトとShunPreparedStatementオブジェクトは、使用後にそれぞれのcloseメソッドで必ず解放します。
以下に、Apworksの対話形式のウィザードで作成されたShunsakuアクセスクラスを使ったビジネスクラスの記述例と、ビジネスクラスで使用しているShunsakuアクセスクラスのひな形を示します。
ShunConnection con = new ShunConnection(); ShunsakuAccessController controller = new ShunsakuAccessController(con); controller.search(key); Object[] resultData = controller.getResultData(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 = "/"; (b) : getPreparedStatement(queryString, returnString); : } private void getPreparedStatement(String queryString, String returnString) { : pstmt = con.preparedSearch(queryString, returnString); (2) : } |
public Object[] getResultData(String sortString) throws ShunException { : resultSet = getResultSet(sortString); : resultData = parseResultSet(resultSet); (5) : resultSet.close(); (6) } 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); (3) } : return pstmt.executeSearch(); (4) : } |
ソート式は、対話形式のウィザードで作成し、ソート識別子としてShunsakuアクセスクラスの定数として定義されます。
public class ShunsakuAccessController { : public static final String SORT_NONE = ""; (1) public static final String SORT_1 = "val(/document/base/price/text())"; (1) : } |
public void close() throws ShunException { : pstmt.close(); (6) : } |
目次
索引
![]() ![]() |