My code throws the error
Invalid attempt to call Read when reader is closed.
I’m using SqlDataReader to read values from database, and that is my code:
while (rd.Read())
{
string stateincharge = rd["stateincharge"].ToString();
string email = rd["email"].ToString();
cmd.Dispose();
rd.Close();
cmd = con.CreateCommand();
cmd.CommandText = "str_procedure";
cmd.Parameters.AddWithValue("@stateincharge", stateincharge);
cmd.CommandType = CommandType.StoredProcedure;
ad.SelectCommand = cmd;
ad.Fill(ds);
count = ds.Tables[0].Rows.Count;
DataTable dt = new DataTable();
}
This runs in a loop in ASP.NET code-behind.
My problem is that I think I need to close SqlDatReader because of an error shown.
How can I again open sqlDataReader at end of the while loop?
You have to remove the line that closes the reader
rd.Close();because you are closing the reader inside the while loop then you try to access the reader again. Also, I think if you used a new SQL command and new adapter you will not receive this error.