Problem z SqlDataReader

0

Witam,

przy wywołaniu takiej funkcji:

public SqlDataReader getAllEntries()
{
SqlConnection DBConn = new SqlConnection();
DBConn.ConnectionString = conString;

string sqlProcedure = "GetAllEntries";
SqlCommand sqlCmd = new SqlCommand(sqlProcedure, DBConn);
sqlCmd.CommandType = CommandType.StoredProcedure;

DBConn.Open();
SqlDataReader sdr = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
DBConn.Close();

return sdr;
}

otrzymuję błąd

Invalid attempt to call FieldCount when reader is closed

Jestem nowy jeśli chodzi o technologię ASP.NET i niezbyt wiem czym to jest spowodowane, wydaje mi się że wszystko powinno być w porządku ale jednak nie jest, np jeśli zwracałbym dataset to wszystko jest oki. Jaki bład popełniam przy korzystaniu sqldatareader'a?

DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter();

string sqlProcedure = "GetAllEntries";
SqlCommand sqlCmd = new SqlCommand(sqlProcedure, DBConn);
sqlCmd.CommandType = CommandType.StoredProcedure;

sda.SelectCommand = sqlCmd;
sda.Fill(ds);
return ds;

Tutaj wszystko jest oki.

Prosiłbym o pomoc, z góry dzięki.

0

Problem rozwiązany,

Podczas wykonywania operacji na SqlDataReader połączenie musi być otwarte, dlatego musisz usunąć tę linię:

DBConn.Close();

Tylko pamiętaj, żeby po zakończeniu pracy z obiektem SqlDataReader wywołać na nim metodę Close lub Dispose. To spowoduje zamknięcie połączenia razem z SqlDataReader (dzięki fladze CommandBehavior.CloseConnection przekazanej do metody SqlCommand.ExecuteReader).

1 użytkowników online, w tym zalogowanych: 0, gości: 1