/*
 * $Id: Select.java,v 1.2 2005/11/16 17:14:27 rampil Exp $
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.koike.rss.tools.itb.search;

import org.logical_paradox.koike.rss.tools.DataSourceException;

/**
 * 指定条件に合致するレコードをデータソースから検索する処理．
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public interface Select {
	/**
	 * データソースとの接続を確立する．
	 * @param connstr 接続文字列
	 * @throws DataSourceException データソースとの接続に失敗
	 */
	public void open(String connstr) throws DataSourceException;
	/**
	 * データソースとの接続を閉じる．
	 * @throws DataSourceException データソースとの切断に失敗
	 */
	public void close() throws DataSourceException;
	/**
	 * 問い合わせを実行する．
	 * @param q 問い合わせ条件
	 * @return 問い合わせ結果レコードセット
	 * @throws DataSourceException データソースとの接続に失敗
	 */
	public QueryRecord[] executeQuery(Query q) throws DataSourceException;
	/**
	 * 指定検索条件で何件のレコードがヒットするかを返す．
	 * @param q 問い合わせ条件
	 * @return 該当件数(-1:不明)
	 * @throws DataSourceException データソースとの接続に失敗
	 */
	public int countQuery(Query q) throws DataSourceException;
}
