まずオフを返す-recordset.Select、あなたはもちろん、あなたを書き換えることができますループはそうです:
{
bool ok = recordset.Select(...);
for (std::size_t i = 0; ok; ok = recordset.MoveNext(), ++i)
{
/* ... */
}
}
しかし、ここでのメタレッスンは、ほぼすべてのループがfor
-loopsであり、構造が異なると思うときは、もう一度考えてください。あなたのロジックをより明確にするために、おそらくfor
-loopsの書き換えがあります。現在のコードでは、最初のエラーと後で「レコードがありません」というエラーは区別されません。新しいコードでは、それは今、明示的に可能です:
if (bool ok = recordset.select(...))
{
for (std::size_t i = 0; ok; ok = recordset.MoveNext(), ++i) { /* ... */ }
}
else
{
// handle initial error
}
私は多分、冗長ok
変数を取り除くになります。
if (recordset.select(...))
{
for (std::size_t i = 0; ; ++i)
{
/* ... */
if (!recordset.MoveNext()) break;
}
}
else
{
// handle initial error
}
1つのステートメントで2種類の変数を定義することはできないためです。 – StenSoft
助けてくれてありがとう –