SqlDataReader.Read() always returning false
I have the following situation:
using (SqlConnection conexao = new SqlConnection(ConnectionString))
{
SqlCommand comando = new SqlCommand(query, conexao);
comando.Parameters.AddWithValue("id", idUsuario);
conexao.Open();
SqlDataReader reader = comando.ExecuteReader(CommandBehavior.SingleRow);开发者_JAVA百科
if (reader.Read())
{
Hydrate(out entity, reader);
}
}
So, if reader
contains valid results and HasRows == true
, then reader.Read()
should return true, right?
Well, it doesn't for me. I have no idea of what is going on, because the Hydrate(out entity, reader);
line is never getting hit.
Can someone please help me understand this?
Thank you!
Actually, what happens is SqlDataReader.Read returns true if it is NOT the last row.
Your behavior specifies "SingleRow", so the reader aligns the reader to the first row, and returns false saying "there are no rows left after this one".
See this link Here for the documentation on this: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read.aspx
"true if there are more rows; otherwise false."
Of interest, however, their examples seem like they would ignore the very last row based on that sentence...
精彩评论