package ricecakesoftware.common.sql;

import java.util.List;

import ricecakesoftware.common.exception.RcswException;

/**
 * SQL処理インターフェース
 * @author RCSW)Y.Omoya
 * @param <T1> パラメーター
 * @param <T2> レコード
 */
public interface ISqlOperator<T1, T2> {
	/**
	 * SQL組み立て
	 * @param parameter パラメーター
	 * @throws RcswException
	 */
	void make(T1 parameter) throws RcswException;

	/**
	 * SQL実行
	 * @return 処理結果
	 * @throws RcswException
	 */
	long execute() throws RcswException;

	/**
	 * フェッチ
	 * @return 処理結果(true:正常、false:異常)
	 * @throws RcswException
	 */
	boolean fetch() throws RcswException;

	/**
	 * クローズ
	 * @throws RcswException
	 */
	void close() throws RcswException;

	/**
	 * レコード取得
	 * @return レコード
	 */
	T2 getRecord();

	/**
	 * 全レコード取得
	 * @return 全レコード
	 */
	List<T2> getAllRecord();
}
