protected DataClassCollection ExecuteSP(String strSP, String[] astrParameterNames, DataClass dcParameters)
    {
        List <DataClass>    lstdictReturn = new List <DataClass>();
        DataClassCollection dcc           = new DataClassCollection();

        using (SqlConnection con = new SqlConnection(ConnectionString))
        {
            string queryStatement = GenerateSPQueryString(strSP, astrParameterNames, dcParameters);

            using (SqlCommand cmd = new SqlCommand(queryStatement, con))
            {
                DataTable table = new DataTable();

                SqlDataAdapter dap = new SqlDataAdapter(cmd);
                cmd.CommandTimeout = 300;
                con.Open();
                dap.Fill(table);
                con.Close();

                foreach (DataRow r in table.Rows)
                {
                    DataClass dcRow = new DataClass();
                    foreach (DataColumn c in table.Columns)
                    {
                        dcRow[c.ColumnName] = r[c.ColumnName].ToString().TrimEnd();
                    }
                    dcc.Add(dcRow);
                }
            }
        }


        return(dcc);
    }
        public DataClass GetGraphData(String strStatesQuery, String strNamesQuery)
        {
            DataClass dcSearch = new DataClass();

            dcSearch["namesarray"]  = strNamesQuery;
            dcSearch["statesarray"] = strStatesQuery;
            DataClassCollection dccolData = this.ExecuteSP("spSearchNames", new string[2] {
                "namesarray", "statesarray"
            }, dcSearch);

            DataClass dcReturn = new DataClass();

            int[]    aintYears        = new int[dccolData.Count];
            int[]    aintFemale       = new int[dccolData.Count];
            int[]    aintMale         = new int[dccolData.Count];
            int[]    aintPercentYears = new int[dccolData.Count];
            double[] adblPercentM     = new double[dccolData.Count];
            int      intPercentCount  = 0;

            for (int i = 0; i < dccolData.Count; i++)
            {
                int intYear   = Int32.Parse(dccolData[i]["Year"].ToString());
                int intMale   = Int32.Parse(dccolData[i]["Males"].ToString());
                int intFemale = Int32.Parse(dccolData[i]["Females"].ToString());
                aintYears[i]  = intYear;
                aintMale[i]   = intMale;
                aintFemale[i] = intFemale;

                if (intFemale + intMale > 0)
                {
                    aintPercentYears[intPercentCount] = intYear;
                    adblPercentM[intPercentCount]     = ((double)intMale) / ((double)(intFemale + intMale)) * 100.0;
                    intPercentCount++;
                }
            }

            Array.Resize(ref aintPercentYears, intPercentCount);
            Array.Resize(ref adblPercentM, intPercentCount);

            dcReturn["Years"]           = aintYears;
            dcReturn["Males"]           = aintMale;
            dcReturn["Females"]         = aintFemale;
            dcReturn["YearsPercentage"] = aintPercentYears;
            dcReturn["MalesPercentage"] = adblPercentM;
            return(dcReturn);
        }