public override bool Read()
{
if(null == Results ||
(_readerState & (ReaderState.HasRows | ReaderState.Eof)) != ReaderState.HasRows)
return false;
bool firstRead = false;
try {
if ((_readerState & ReaderState.FirstRed) != 0) {
firstRead = true;
_readerState &= ~ReaderState.FirstRed;
return true;
}
else {
bool next = Results.next();
if (!next)
_readerState |= ReaderState.Eof;
return next;
}
}
catch (SQLException exp) {
// suppress exception as .Net does
return false;
}
finally {
// in case of first read we could sampled the first value
// to see whether there is a resultset, so _currentCacheFilledPosition
// might be already inited
if (!firstRead)
_currentCacheFilledPosition = -1;
}
}