レコードの検索には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();
.....
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(); // レコードの検索
レコードの検索結果は,DBResultSetオブジェクトのIsEOFメソッドを使って確認します。判定がFALSEであれば,ResultSetにデータが読み込まれています。
又は,DBResultSetオブジェクトのGetRowCountメソッドでレコード数を調べられます。
pResultSet = pStatement->GetResultSet(); // レコードの検索
if (pResultSet->IsEOF()) // 検索結果の確認
pResultSet = pStatement->GetResultSet(); // レコードの検索
RCount=pResultSet->GetRowCount(); // 検索結果の確認