示例#1
0
  /**
   * <br>
   * [機 能] 指定したアンケートの対象人数を取得する <br>
   * [解 説] <br>
   * [備 考]
   *
   * @param emnSid アンケートSID
   * @param eqmSeq 設問連番
   * @return 対象者件数
   * @throws SQLException SQL実行時例外
   */
  public int[] getAnswerCount(long emnSid, int eqmSeq) throws SQLException {

    PreparedStatement pstmt = null;
    ResultSet rs = null;
    Connection con = null;
    int[] result = new int[3];
    con = getCon();

    try {
      // SQL文
      SqlBuffer sql = new SqlBuffer();
      sql.addSql(" select ");
      sql.addSql("   count(EMN_SID) as CNT");
      sql.addSql(" from");
      sql.addSql("   ENQ_ANS_MAIN");
      sql.addSql(" where");
      sql.addSql("   EMN_SID = ?");
      sql.addLongValue(emnSid);

      log__.info(sql.toLogString());

      pstmt = con.prepareStatement(sql.toSqlString());
      sql.setParameter(pstmt);
      rs = pstmt.executeQuery();
      if (rs.next()) {
        result[0] = rs.getInt("CNT");
      }

      JDBCUtil.closeResultSet(rs);
      JDBCUtil.closePreparedStatement(pstmt);

      sql = new SqlBuffer();
      sql.addSql(" select");
      sql.addSql("   count(distinct USR_SID) as ANSCNT");
      sql.addSql("  from");
      sql.addSql("    ENQ_ANS_SUB");
      sql.addSql("  where");
      sql.addSql("    EMN_SID = ?");
      sql.addSql("  and");
      sql.addSql("    EQM_SEQ = ?");
      sql.addSql("  and");
      sql.addSql("    EAS_ANS is not null ");
      sql.addSql("  and");
      sql.addSql("    EAS_ANS <> ''");
      sql.addLongValue(emnSid);
      sql.addLongValue(eqmSeq);

      log__.info(sql.toLogString());

      pstmt = con.prepareStatement(sql.toSqlString());
      sql.setParameter(pstmt);
      rs = pstmt.executeQuery();
      if (rs.next()) {
        result[1] = rs.getInt("ANSCNT");
        if (result[0] > 0) {
          result[2] = result[0] - result[1];
        }
      }

    } catch (SQLException e) {
      throw e;
    } finally {
      JDBCUtil.closeResultSet(rs);
      JDBCUtil.closeStatement(pstmt);
    }

    return result;
  }