Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET reading data from DB

new problem out there. While reading data from database and when it runs out of records, it simply says "Invalid attempt to read when no data is present", so the question is how to prevent that?

Here's my code:

{
    Label3.Text = Request.QueryString["Username"];

}

SqlConnection con = new SqlConnection("Data Source=JEVGENIJ-PC;Initial Catalog=ViaFitness;Integrated Security=True");
static SqlDataReader dr;
SqlCommand cmd;

protected void Button1_Click(object sender, EventArgs e)
{

    con.Open();

    SqlCommand cmd = new SqlCommand("select * from Summary where UserName='"+Label3.Text+ "'", con);

    dr = cmd.ExecuteReader();
    dr.Read();
    Label3.Text = dr[2].ToString();
    Label1.Text = dr[1].ToString();
    Label2.Text = dr[0].ToString();

}
 protected void Button2_Click(object sender, EventArgs e)
{
    dr.Read();
    Label3.Text = dr[2].ToString();
    Label1.Text = dr[1].ToString();
    Label2.Text = dr[0].ToString();
    con.Close();
}

}

like image 965
Ženia Bogdasic Avatar asked Mar 07 '26 01:03

Ženia Bogdasic


2 Answers

You should make sure you have data in your reader:

protected void Button1_Click(object sender, EventArgs e)
{

    con.Open();

    SqlCommand cmd = new SqlCommand("select * from Summary where UserName='"+Label3.Text+ "'", con);

    dr = cmd.ExecuteReader();
    if (dr.Read())
    {
        Label3.Text = dr[2].ToString();
        Label1.Text = dr[1].ToString();
        Label2.Text = dr[0].ToString();
    }

}
 protected void Button2_Click(object sender, EventArgs e)
{
    if (dr.Read())
    {
        Label3.Text = dr[2].ToString();
        Label1.Text = dr[1].ToString();
        Label2.Text = dr[0].ToString();
    }
    con.Close();
}

Check out the MSDN-page for more info: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read.aspx

like image 127
Kenneth Avatar answered Mar 09 '26 17:03

Kenneth


call dr.read before every fetch. check if it is true , which means data is present

MSDN SqlDataReader.Read Method - Advances the SqlDataReader to the next record.

SqlDataReader reader = command.ExecuteReader();

// Call Read before accessing data. 
while (reader.Read())
{
        ReadSingleRow((IDataRecord)reader);
}

// Call Close when done reading.
reader.Close();
like image 36
aked Avatar answered Mar 09 '26 17:03

aked



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!