/** * 領域情報を登録する。 * * @param connection コネクション * @param addInfo 登録するキーワード情報 * @throws DataAccessException 登録中に例外が発生した場合。 * @throws DuplicateKeyException キーに一致するデータが既に存在する場合。 */ public void insertRyoikiInfo(Connection connection, RyouikiInfo addInfo) throws DataAccessException, DuplicateKeyException { // 重複チェック try { selectRecord(connection, addInfo); // NG throw new DuplicateKeyException("'" + addInfo + "'は既に登録されています。"); } catch (NoDataFoundException e) { // OK } String query = "INSERT INTO MASTER_RYOIKI " + "(" + " RYOIKI_NO" // 領域番号 + ",RYOIKI_RYAKU" // 領域略称名 + ",KOMOKU_NO" // 研究項目番号 + ",KOUBO_FLG" // 公募フラグ + ",KEIKAKU_FLG" // 計画研究フラグ // add start liuyi 2006/06/30 + ",ZENNENDO_OUBO_FLG" // 前年度応募フラグ + ",SETTEI_KIKAN_KAISHI" // 設定期間(開始年度) + ",SETTEI_KIKAN_SHURYO" // 設定期間(終了年度) + ",SETTEI_KIKAN" // 設定期間 // add end liuyi 2006/06/30 + ",BIKO" // 備考 + ")" + "VALUES " + "(?,?,?,?,?,?,?,?,?,?)"; PreparedStatement preparedStatement = null; try { // 登録 preparedStatement = connection.prepareStatement(query); int i = 1; DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getRyoikiNo()); DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getRyoikiName()); DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getKomokuNo()); DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getKobou()); DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getKeikaku()); // add start liuyi 2006/06/30 DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getZennendoOuboFlg()); DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getSettelKikanKaishi()); DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getSettelKikanShuryo()); DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getSettelKikan()); // add end liuyi 2006/06/30 DatabaseUtil.setParameter(preparedStatement, i++, addInfo.getBiko()); DatabaseUtil.executeUpdate(preparedStatement); } catch (SQLException ex) { log.error("領域マスタ情報登録中に例外が発生しました。 ", ex); throw new DataAccessException("領域マスタ情報登録中に例外が発生しました。 ", ex); } finally { DatabaseUtil.closeResource(null, preparedStatement); } }
/** * 領域番号の件数を取得する。 領域番号順にソートする。 * * @param connection コネクション * @param ryoikoNo 領域番号 * @return * @throws ApplicationException * @throws DataAccessException */ public String selectRyoikiNoCount(Connection connection, String ryoikoNo) throws ApplicationException, DataAccessException { String strCount = null; ResultSet recordSet = null; PreparedStatement preparedStatement = null; // ----------------------- // SQL文の作成 // ----------------------- StringBuffer select = new StringBuffer(); select.append("SELECT COUNT(RYOIKI_NO) "); select.append(ISystemServise.STR_COUNT); select.append(" FROM"); select.append(" (SELECT MR.RYOIKI_NO FROM MASTER_RYOIKI MR WHERE MR.ZENNENDO_OUBO_FLG = '1' "); select.append(" AND MR.RYOIKI_NO = '"); select.append(EscapeUtil.toSqlString(ryoikoNo)); select.append("')"); if (log.isDebugEnabled()) { log.debug("query:" + select.toString()); } try { preparedStatement = connection.prepareStatement(select.toString()); recordSet = preparedStatement.executeQuery(); if (recordSet.next()) { strCount = recordSet.getString(ISystemServise.STR_COUNT); } else { throw new NoDataFoundException("領域マスタデータテーブルに該当するデータが見つかりません。"); } } catch (SQLException ex) { throw new DataAccessException("領域マスタデータテーブルの検索中に例外が発生しました。", ex); } catch (NoDataFoundException ex) { throw new NoDataFoundException("該当する領域番号が存在しません。", ex); } return strCount; }