Is it OK to pass SQLCommand as a parameter?
        Posted  
        
            by TooFat
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by TooFat
        
        
        
        Published on 2010-04-23T13:49:38Z
        Indexed on 
            2010/04/23
            13:53 UTC
        
        
        Read the original article
        Hit count: 331
        
I have a Business Layer that passes a Conn string and a SQLCommand to a Data Layer like so
    public void PopulateLocalData()
    {
       System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
       cmd.CommandType = System.Data.CommandType.StoredProcedure;
       cmd.CommandText = "usp_PopulateServiceSurveyLocal";
       DataLayer.DataProvider.ExecSQL(ConnString, cmd);
    }
The DataLayer then just executes the sql like so
        public static int ExecSQL(string sqlConnString, System.Data.SqlClient.SqlCommand cmd)
    { 
        int rowsAffected;
        using (SqlConnection conn = new SqlConnection(sqlConnString))
        {
            conn.Open();
            cmd.Connection = conn;
            rowsAffected = cmd.ExecuteNonQuery();
            cmd.Dispose();
        }
        return rowsAffected;
    }
Is it OK for me to pass the SQLCommand as a parameter like this or is there a better more accepted way of doing it. One of my concerns is if an error occurs when executing the query the cmd.dispose line will never execute. Does that mean it will continue to use up memory that will never be released?
© Stack Overflow or respective owner