DABroker for C++

[目次][用語][索引][前へ][次へ]

2.6.1 レコードの検索

<この項の構成>
(1) DBStatementクラスを利用した検索
(2) DBPreparedStatementクラスを利用した検索
(3) 検索結果の確認

(1) DBStatementクラスを利用した検索

レコードの検索にはSQL文のSELECT文を使います。DBStatementクラスを使用する場合, SELECT文中に?パラメタを指定できません。

アプリケーションでは, DBConnectionオブジェクトのCreateStatementメソッドを呼び出して, DBStatement オブジェクトを生成し,Executeメソッドの引数としてSELECT文を指定します。

ロック方法は,SetResultSetTypeメソッドで設定し,一度にResultSetに読み込むレコードの最大数は,SetMaxRowsメソッドを使って設定します。

レコードの検索は,DBStatementオブジェクトのGetResultSetメソッドを呼び出して,検索結果をResultSetに得ます。

 
//////////////////////////////////////////////////////////////
/// SQLの実行(検索)  ?パラメタを使用しない
 
DBStatement*                pStatement;
DBResultSet*                pResultSet;
 
                       // DBStatementオブジェクトの生成
pStatement = pConnect->CreateStatement();
                       // 排他オプションの設定
pStatement->SetResultSetType(TYPE_NONE);
                       // SELECT文の設定
pStatement->Execute("SELECT F1, F2 FROM TABLE1");
                       // レコードの検索
pResultSet = pStatement->GetResultSet();
.....

(2) DBPreparedStatementクラスを利用した検索

SQL文のSELECT文中に?パラメタを指定した検索には,DBPreparedStatementクラスを使用します。

アプリケーションでは, DBConnectionクラスのCreatePreparedStatementメソッドの引数としてSQL文を指定して,DBPreparedStatement オブジェクトを生成し,Executeメソッドでデータベースへ通知(SQL文の解析)します。その後,?パラメタへの値を, SetParamメソッドで設定します。

ロック方法は,SetResultSetTypeメソッドで設定し,一度にResultSetに読み込むレコード数の最大値は,SetMaxRowsメソッドを使って設定します。

レコードの検索は,GetResultSetメソッドを呼び出して,検索結果をResultSetに得ます。

 
//////////////////////////////////////////////////////////////
/// SQLの実行(検索)  ?パラメタを使用
 
DBPreparedStatement*        pStatement;
DBResultSet*                pResultSet;
                   :
                   :
// DBPreparedStatementオブジェクトを生成。
// このとき,SQL文に?パラメタを設定
pStatement=pConnect->CreatePreparedStatement
("SELECT * FROM TABLE1 ID > ? AND ID < ? ");
 pStatement->Execute();                           // SQL文の実行
 pStatement->SetParam(1,100);
                           // SetParamで?パラメタに対する値の設定
 pStatement->SetParam(2,300);
 pResultSet = pStatement->GetResultSet();       // レコードの検索

(3) 検索結果の確認

レコードの検索結果は,DBResultSetオブジェクトのIsEOFメソッドを使って確認します。判定がFALSEであれば,ResultSetにデータが読み込まれています。

又は,DBResultSetオブジェクトのGetRowCountメソッドでレコード数を調べられます。

(例1)IsEOFを使った場合
 
pResultSet = pStatement->GetResultSet();        // レコードの検索
if (pResultSet->IsEOF())                        // 検索結果の確認

(例2) GetRowCountを使った場合
 
pResultSet = pStatement->GetResultSet();        // レコードの検索
RCount=pResultSet->GetRowCount();               // 検索結果の確認