-1

Currently I am getting an error when attempting to fetch data using SqlDataReader and the parameter is in list i.e. on newcmd.Parameters.Add("@frmcat", res[i]);

Here is my code

        SqlDataAdapter adpt = new SqlDataAdapter("SELECT DISTINCT TOP 5 category, COUNT(category) AS totcom FROM coupon_deal WHERE (company LIKE '%" + query + "%') GROUP BY category ORDER BY totcom DESC", conn);
        DataTable dt = new DataTable();
        adpt.Fill(dt);

        int TotalRow = dt.Rows.Count;

        List<string> res = new List<string>();
        for (int i = 0; i < TotalRow; i++)
        {
            res.Add(dt.Rows[i]["category"].ToString());
        }

        List<string> cl = new List<string>();
        SqlCommand newcmd = new SqlCommand("SELECT company, count(company) AS totcomp from coupon_deal Where (category LIKE @frmcat) GROUP BY company ORDER BY totcomp DESC", conn);
        for (int i = 0; i <= res.Count; i++)
        {
            newcmd.Parameters.Clear();
            newcmd.Parameters.Add("@frmcat", res[i]);
            SqlDataReader sdr = newcmd.ExecuteReader();
            if (sdr.HasRows)
            {
                while (sdr.Read())
                {
                    cl.Add(sdr["company"].ToString());
                }
            }
            sdr.Close();
            sdr.Dispose();
        }
Chetan Naik
  • 151
  • 13

1 Answers1

2

So i < res.Count should fix issue:

    for (int i = 0; i < res.Count; i++)
    {
        newcmd.Parameters.Clear();
        newcmd.Parameters.Add("@frmcat", res[i]);
        SqlDataReader sdr = newcmd.ExecuteReader();
        if (sdr.HasRows)
        {
            while (sdr.Read())
            {
                cl.Add(sdr["company"].ToString());
            }
        }
        sdr.Close();
        sdr.Dispose();
    }
Maxqueue
  • 2,194
  • 2
  • 23
  • 55