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 データの検索 |
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(); |
ShunPreparedStatementオブジェクトは、prepareSearchメソッドのパラメタに検索式とリターン式を指定して作成します。
検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。
setRequestメソッドに返信開始番号と返信要求件数を指定します。setRequestメソッドを省略した場合、返信要求件数はconductor用動作環境ファイルまたはdirector用動作環境ファイルのAnsMaxに設定された値が指定されます。
返信要求件数には、1画面に表示する件数を指定します。
検索の実行はexecuteSearchメソッドを使用します。検索した結果としてShunResultSetオブジェクトが作成されます。
検索条件に一致するXML文書のヒット件数は、getHitCountメソッドで取得できます。この値を使用して、検索した結果のページ数などを求めることができます。
検索した結果を取り出す前には、必ず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_NONE, 11, 5); 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); (1) : } |
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) } |
public void close() throws ShunException { : pstmt.close(); (5) : } |
目次
索引
![]() ![]() |