I'm running an if else statement off of a datareader to query table data and activate/de-activate some controls on a page. I implemented a using statement to automatically close the connection and the reader when I close the block, but I still get the reader is closed error on each of my if else statements. What's missing? Code below:
string comnt = "SELECT StatusId FROM Submission WHERE SubmissionId =" + x;
using (SqlConnection editConn = new SqlConnection(connectionString))
{
editConn.Open();
using (SqlCommand statCmd = new SqlCommand(comnt, editConn))
{
SqlDataReader dr = statCmd.ExecuteReader();
dr.Read();
if (dr.GetInt32(0) > 0)
{
PanelComment.Visible = true;
PanelQuote.Visible = false;
LnbFid.Visible = false;
LnbCrim.Visible = false;
LnbEo.Visible = false;
LnbEpl.Visible = false;
LnbNot.Visible = false;
LnbPriv.Visible = false;
LnbPub.Visible = false;
}
else
{
PanelComment.Visible = false;
}
}
Your query is not getting any results back. Get used to the following construct if you are not sure if your query will return any data:
while (dr.Read()) //will return true while there is data to be read.
{
...
}
I faced this problem due to mismatch of reader name. i.e.
SqlCommand sqlmd = new SqlCommand();
SqlDataReader sqldr = sqlmd.ExecuteReader();
while (sqldr.Read())
{
idd = (int)rdr["Id"];
}
later I replaced the code
idd = (int)sqldr["Id"];
and the error was solved.
Try this way:
if (dr.HasRows)
{
while (dr.Read())
{
if (dr.GetInt32(0) > 0)
{
...
}
}
}
For more info, check this page:
Retrieving Data Using a DataReader
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With