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 データの検索

9.3.2.2 件数に応じて検索した結果を取得する

Webアプリケーションでは、画面にすべての検索結果を表示するのではなく、任意の件数ごとにページを制御することが一般的です。

このような場合、setRequestメソッドに返信開始番号(position)と返信要求件数(requestCount)を指定して、取得するデータの件数を制御します。

件数に応じて検索した結果を取得する場合の流れについて、以下の図に示します。

[図:件数に応じて検索した結果を取得する場合の流れ]

■記述例

ShunConnection con = new ShunConnection();
String queryExpression = "/document/base/prefecture == '大阪'";
String returnExpression = "/document/base/name, /document/base/price";
ShunPreparedStatement pstmt = con.prepareSearch(queryExpression, returnExpression);       (1)
pstmt.setRequest(11,5);                                                                   (2)
ShunResultSet rs = pstmt.executeSearch();                                                 (3)
System.out.println("[ヒット件数] = " + rs.getHitCount());                                  (3)
while(rs.next()) {                                                                        (4)
  System.out.println("[検索結果] = " + rs.getString());                                    (4)
}
rs.close();                                                                               (5)
pstmt.close();                                                                            (5)

con.close();

◆(1) ShunPreparedStatementオブジェクトの作成

ShunPreparedStatementオブジェクトは、prepareSearchメソッドのパラメタに検索式とリターン式を指定して作成します。

検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。

◆(2) 返信開始番号と返信要求件数の設定

setRequestメソッドに返信開始番号と返信要求件数を指定します。setRequestメソッドを省略した場合、返信要求件数はconductor用動作環境ファイルまたはdirector用動作環境ファイルのAnsMaxに設定された値が指定されます。

返信要求件数には、1画面に表示する件数を指定します。

◆(3) 検索の実行(ShunResultSetオブジェクトの作成)

検索の実行はexecuteSearchメソッドを使用します。検索した結果としてShunResultSetオブジェクトが作成されます。

検索条件に一致するXML文書のヒット件数は、getHitCountメソッドで取得できます。この値を使用して、検索した結果のページ数などを求めることができます。

◆(4) 検索した結果の取出し

検索した結果を取り出す前には、必ずnextメソッドを使用します。nextメソッドは、次のデータが存在する場合はtrueを返し、それ以上データがない場合はfalseを返します。

XML文書を取り出すには、目的に応じて以下のメソッドを使用します。使用可能なメソッドについては以下の表を参照してください。

[表:XML文書を取り出す場合に使用可能なメソッド一覧]

メソッド名

機能説明

getString

XML文書をStringオブジェクトで取り出します。

getStringArray

XML文書をStringオブジェクトの2次元配列で取り出します。

getStream

XML文書をInputStreamオブジェクトで取り出します。

備考.getStringArrayメソッドは、検索した結果をテキスト形式で取り出す場合に有効です。

検索した結果とともにデータを一意に識別するレコードIDをgetRecordIDメソッドで取得できます。レコードIDは、対応するXML文書の全体を取り出したり、削除、更新する場合に使用します。

◆(5) ShunResultSetオブジェクトおよびShunPreparedStatementオブジェクトの解放

ShunResultSetオブジェクトとShunPreparedStatementオブジェクトは、使用後にそれぞれのcloseメソッドで必ず解放します。

■Apworks利用時の記述例

以下に、Apworksの対話形式のウィザードで作成されたShunsakuアクセスクラスを使ったビジネスクラスの記述例と、ビジネスクラスで使用しているShunsakuアクセスクラスのひな形を示します。

ビジネスクラス

ShunConnection con = new ShunConnection();

ShunsakuAccessController controller = new ShunsakuAccessController(con);
controller.search(key);
Object[] resultData = 
      controller.getResultData(ShunsakuAccessController.SORT_NONE, 11, 5);
controller.close();

con.close();

ShunPreparedStatementオブジェクト

public class ShunsakuAccessController {
    :
   private ShunPreparedStatement pstmt;
    :
}

Shunsakuアクセスクラスのsearchメソッド

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);                                     (1)
    :
}
(a)検索式
対話形式のウィザードで定義します。複雑な検索式も対話形式のウィザードで作成することができます。
(b)リターン式
XML文書全体を取り出す“/”が指定されます。

ShunsakuアクセスクラスのgetResultDataメソッド

public Object[] getResultData(String sortString,
                              int position,
                              int requestCount)
                                          throws ShunException {
    :
  ShunResultSet resultSet = getResultSet(sortString, position, requestCount);
    :
  Object[] resultData = parseResultSet(resultSet);                               (4)
    :
  resultSet.close();                                                             (5)
    :
}

public ShunResultSet getResultSet(String sortString,
                                  int position,
                                  int requestCount)
                                  throws ShunException {
  if(!sortString.equals(SORT_NONE)) {
      pstmt.setSort(sortString);
   }
   pstmt.setRequest(position, requestCount);                                     (2)
   return pstmt.executeSearch();                                                 (3)
}

Shunsakuアクセスクラスのcloseメソッド

public void close() throws ShunException {
    :
   pstmt.close();                                                  (5)
    :
}

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006