Running SQL queries containing querystrings in codebehind.

I have an ASP.NET page with a QueryString in the URL of AlbumID (Example: MyPage.aspx?AlbumID=1). I need to write some codebehind in C# on this page that simply gets an average by running a query for the AlbumID in the querystring, and put that result in a Label1 in the ASP.NET front page.

Here is my code:

 protected void Page_Load(object sender, EventArgs e)
    {

        SqlConnection myConnection = null;

        try
        {
            string connString = ConfigurationManager.ConnectionString["ConnectionString"].ConnectionString;

            myConnection = new SqlConnection();
            myConnection.ConnectionString = connString;
            myConnection.Open();

            SqlCommand getAverage = new SqlCommand();
            getAverage.CommandText = "SELECT AVG(Rating) FROM Ratings WHERE AlbumID = @AlbumID";
            getAverage.Connection = myConnection;

            SqlDataReader reader = getAverage.ExecuteReader();
            getAverage.Parameters.AddWithValue("@AlbumID", Label1.Text);

            while (reader.Read())
            {
                string average = (string)reader["avg"];
                Label1.Text += average;
            }
            getAverage.ExecuteNonQuery();

            reader.Close();
            myConnection.Close();
        }
        catch(Exception ex)
        {
// Just for testing.
            Label1.Text += ex.ToString();
        }
    }

When I run this, I get the exception "Must declare the scalar variable "@AlbumID". " and I don't know why it isn't reading what is in the querystring.

Any Ideas?

thanks,
Igor
igor92128Asked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
burakiewiczConnect With a Mentor Commented:
you are executing the reader before you add the parameter puut this
getAverage.Parameters.AddWithValue("@AlbumID", Label1.Text);
SqlDataReader reader = getAverage.ExecuteReader();
           
0
All Courses

From novice to tech pro — start learning today.