How to solve this error" ExecuteNonQuery requires an open and available Connection. The connection's current state is closed." ASP.NET C#(WEB)?
<p>I've converted my project into 3Layers architecture,but I'm facing problem in database connectivity.Here error come </p>

<pre><code>"ExecuteNonQuery requires an open and available Connection. 
  The connection's     current state is closed.

Description: An unhandled exception occurred during the 
 execution of the current web request. 
 Please review the stack trace for more information about        
 the error   and where it originated in the code. 
 Exception Details: System.InvalidOperationException: ExecuteNonQuery requires an open and 
available Connection.
  The connection's current state  is closed.
  Source Error: 
     Line 22:                 
   cmd.Parameters.AddWithValue("@USERNAME",   USERNAME);
 Line 23:                 cmd.Parameters.AddWithValue("@PASSWORD", PASS);
Line 24:                 cmd.Parameters.AddWithValue("@CONFIRMPASSWORD",   PASS2);
 Line 25:                 cmd.ExecuteNonQuery();
 Line 26:    
  Source File: C:\Users\Hameed\Documents\Visual Studio     2010\Projects\database\Data_Layer\csDL.cs    Line: 24   
</code></pre>

<p>Here is my data layer code </p>

<pre><code>     public void SAVE(string USER, string EMAIL, string USERNAME, string PASS, string PASS2)
    {

        SqlConnection cnn = new SqlConnection("Data Source=.\\HAMEED_KHAN\\SQLEXPRESS; Initial catalog=db_compiler; Integrated security=True");
        cnn.Open();

            SqlCommand cmd = new SqlCommand("INSERT", cnn);

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@NAME", USER);
            cmd.Parameters.AddWithValue("@EMAIL", EMAIL);
            cmd.Parameters.AddWithValue("@USERNAME", USERNAME);
            cmd.Parameters.AddWithValue("@PASSWORD", PASS);
            cmd.Parameters.AddWithValue("@CONFIRMPASSWORD", PASS2);

            cmd.ExecuteNonQuery();
            cnn.Close();


            }
</code></pre>

<p>and here is my stored procedure code.I'm using microsoft sql server management 2012 </p>

<pre><code>      ALTER PROCEDURE [dbo].[INSERT]
      (@NAME varchar(50),
      @USER_NAME varchar(50),@EMAIL varchar(50),
      @PASSWORD varchar(50), @CONFIRM_PASSWORD varchar(50))
      AS
      BEGIN

       INSERT INTO tbl_user
     (NAME,Email,User_Name,Password,Confirm_Password) 
      VALUES(@NAME,@EMAIL,@USER_NAME,@PASSWORD,@CONFIRM_PASSWORD)


        END
</code></pre>

<p>Please,help me Thanks.I'm trying to resolve ,but I failed every time.</p>