Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

付録F Java サンプルプログラム> F.1 データの検索

F.1.5 検索条件に一致するXML文書の値を集計して取得する

検索操作において、検索した結果をある特定の要素の値を集計して取得したい場合があります。

場所を検索条件式に指定して、最も安い宿泊費、最も高い宿泊費、宿泊費の平均値を取得する例を用いて、Java APIの使用例を示します。

■検索条

「2006年7月18日に宿泊可能なホテルのうち、最も安い宿泊費、最も高い宿泊費、宿泊費の平均値を地域別に集計して欲しい。」

年月日(2006年7月18日)を条件に指定します。また、取得する結果に集計式(min, max, avg)を指定し、集計結果を取得します。

■APIの使用

以下にJava APIを使用したプログラミング例を示します。

import com.fujitsu.shun.ShunConnection;
import com.fujitsu.shun.ShunPreparedStatement;
import com.fujitsu.shun.ShunResultSet;
import com.fujitsu.shun.common.ShunException;

/***     指定された検索条件に該当するデータを集計して取得します     ***/
public class JavaAPISample5 {

  public static void main(String[] args) {
    ShunConnection con = null;
    ShunPreparedStatement pstmt = null;
    ShunResultSet rs = null;

    try {
      // 検索条件式
      String sQuery = "/document/information/date == '2006年07月18日'";
      // リターン式
      String sReturn = "/document/base/prefecture/text(), min(/document/base/price/text()), max(/document/base/price/text()), avg(/document/base/price/text())";
      // ソート式
      String sSort = "/document/base/prefecture/text()";

      // ShunConnectionオブジェクトを作成
      con = new ShunConnection("DirSvr1", 33101);

      // 検索式を指定し、ShunPreparedStatementオブジェクトを作成
      pstmt = con.prepareSearch(sQuery, sReturn);

      // ソート式を指定
      pstmt.setSort(sSort);

      //最大取得件数を設定
      pstmt.setRequest(1, 30);

      //検索を実行し、ShunResultSetオブジェクトを作成
      rs = pstmt.executeSearch();

      // 検索条件に該当するデータを取得
      int counter = 0;
      String[][] result;
      while (rs.next()) {
        counter++;
        System.out.println("[結果]" + counter + "件目:");
        result = rs.getStringArray();
        System.out.println("  地域          :" + result[0][0]);
        System.out.println("  最も安い宿泊費:" + result[1][0]);
        System.out.println("  最も高い宿泊費:" + result[2][0]);
        System.out.println("  宿泊費の平均値:" + result[3][0]);
      }
      rs.close();
      pstmt.close();
      con.close();
    }
    // アプリケーション実行時にエラーが発生した場合の処理
    catch (ShunException ex) {
            int errorLevel = ex.getErrLevel();
      switch( errorLevel ) {
        case ShunException.SHUN_ERROR :
          System.out.println("エラーレベル  :SHUN_ERROR");
          break;
        case ShunException.SHUN_ERROR_CONNECTION_TERMINATED :
          System.out.println("エラーレベル  :SHUN_ERROR_CONNECTION_TERMINATED");
          break;
      }
      System.out.println("エラーメッセージ:" + ex.getMessage());
      ex.printStackTrace();
    }
    catch (Exception ex) {
      System.out.println("エラーメッセージ:" + ex.getMessage());
      ex.printStackTrace();
    }
    finally {
      try {
        if (rs != null)
          rs.close();
      }
      catch (ShunException ex) {
              int errorLevel = ex.getErrLevel();
      switch( errorLevel ) {
        case ShunException.SHUN_ERROR :
          System.out.println("エラーレベル  :SHUN_ERROR");
          break;
        case ShunException.SHUN_ERROR_CONNECTION_TERMINATED :
          System.out.println("エラーレベル  :SHUN_ERROR_CONNECTION_TERMINATED");
          break;
      }
        System.out.println("エラーメッセージ:" + ex.getMessage());
        ex.printStackTrace();
      }
      try {
        if (pstmt != null)
          pstmt.close();      }
      catch (ShunException ex) {
              int errorLevel = ex.getErrLevel();
      switch( errorLevel ) {
        case ShunException.SHUN_ERROR :
          System.out.println("エラーレベル  :SHUN_ERROR");
          break;
        case ShunException.SHUN_ERROR_CONNECTION_TERMINATED :
          System.out.println("エラーレベル  :SHUN_ERROR_CONNECTION_TERMINATED");
          break;
      }
        System.out.println("エラーメッセージ:" + ex.getMessage());
        ex.printStackTrace();
      }
      try {
        if (con != null)
          con.close();
      }
      catch (ShunException ex) {
              int errorLevel = ex.getErrLevel();
      switch( errorLevel ) {
        case ShunException.SHUN_ERROR :
          System.out.println("エラーレベル  :SHUN_ERROR");
          break;
        case ShunException.SHUN_ERROR_CONNECTION_TERMINATED :
          System.out.println("エラーレベル  :SHUN_ERROR_CONNECTION_TERMINATED");
          break;
      }
        System.out.println("エラーメッセージ:" + ex.getMessage());
        ex.printStackTrace();
      }
    }
  }
}

■実行結

[結果]1件目:
  地域          :神奈川
  最も安い宿泊費:6000
  最も高い宿泊費:8000
  宿泊費の平均値:7000
[結果]2件目:
  地域          :大阪
  最も安い宿泊費:6000
  最も高い宿泊費:9000
  宿泊費の平均値:7500

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

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