4.8.5 コーディング上の留意事項

複数のCdbrEqlStatementオブジェクトを使用して検索を実行する場合に,個々の検索を終了しないで多数の検索を実行すると,エラーになることがあります。

複数の検索を実行する場合も,一つ一つの検索をそのつど終わらせるようなコーディングにすることをお勧めします。

ここでは,エラーになる可能性があるコーディング例と,それを改善した推奨コーディング例を示します。

<この項の構成>
(1) エラーになる可能性のあるコーディング
(2) 推奨するコーディング

(1) エラーになる可能性のあるコーディング

ここでは,エラーになる可能性があるコーディング例を示します。

なお,処理の流れを明確にするため,引数は省略しています。

// 変数宣言
CdbrEqlStatement* pEqlStatement1 = NULL;
CdbrEqlStatement* pEqlStatement2 = NULL;
   ・
   ・
   ・
// オブジェクトを作成する。
pEqlStatement1 = new CdbrEqlStatement();
pEqlStatement2 = new CdbrEqlStatement();
   ・
   ・
   ・
//////////////////////////////////////
// オブジェクトを初期化する。
//////////////////////////////////////
rc = pEqlStatement1->Initialize(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
rc = pEqlStatement2->Initialize(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
   ・
   ・
   ・
//////////////////////////////////////
// 実行するedmSQL文を設定する。
//////////////////////////////////////
rc = pEqlStatement1->Set(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
rc = pEqlStatement2->Set(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
   ・
   ・
   ・
//////////////////////////////////////
// 検索を実行する。
//////////////////////////////////////
rc = pEqlStatement1->Execute(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
rc = pEqlStatement2->Execute(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
   ・
   ・
   ・
//////////////////////////////////////
// 検索結果を取得する。
//////////////////////////////////////
rc = pEqlStatement1->GetResult(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
rc = pEqlStatement2->GetResult(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
   ・
   ・
   ・

(2) 推奨するコーディング

ここでは,推奨するコーディング例を示します。

なお,処理の流れを明確にするため,引数は省略しています。

// 変数宣言
CdbrEqlStatement* pEqlStatement1 = NULL;
CdbrEqlStatement* pEqlStatement2 = NULL;
   ・
   ・
   ・
// オブジェクトを作成する。
pEqlStatement1 = new CdbrEqlStatement();
pEqlStatement2 = new CdbrEqlStatement();
   ・
   ・
   ・
//////////////////////////////////////
// オブジェクトを初期化する。
//////////////////////////////////////
rc = pEqlStatement1->Initialize(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 実行するedmSQL文を設定する。
//////////////////////////////////////
rc = pEqlStatement1->Set(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 検索を実行する。
//////////////////////////////////////
rc = pEqlStatement1->Execute(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 検索結果を取得する。
//////////////////////////////////////
rc = pEqlStatement1->GetResult(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 検索を終了する。
//////////////////////////////////////
rc = pEqlStatement1->Terminate();
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// オブジェクトを削除する。
//////////////////////////////////////
delete pEqlStatement1;
//////////////////////////////////////
// オブジェクトを初期化する。
//////////////////////////////////////
rc = pEqlStatement2->Initialize(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 実行するedmSQL文を設定する。
//////////////////////////////////////
rc = pEqlStatement2->Set(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 検索を実行する。
//////////////////////////////////////
rc = pEqlStatement2->Execute(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 検索結果を取得する。
//////////////////////////////////////
rc = pEqlStatement2->GetResult(...);
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// 検索を終了する。
//////////////////////////////////////
rc = pEqlStatement2->Terminate();
if(DMA_TRUE != rc)
{
   // エラー処理
}
//////////////////////////////////////
// オブジェクトを削除する。
//////////////////////////////////////
delete pEqlStatement2;