Click here to Skip to main content
16,018,797 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i am making a webservice for getting data like
XML
public List<datalist7> getdata(string id)
      {
          SqlConnection con = new SqlConnection(@"Data Source=saba-PC;Initial Catalog=bcounts;Integrated Security=True");
          con.Open();
          SqlCommand cmd = new SqlCommand("Select Compcode,Acct_sub0 from GI_sub0 where Compcode='" + id + "'", con);
          SqlDataReader rdr = cmd.ExecuteReader();
          List<datalist7> data = new List<datalist7>();
          if (rdr.HasRows)
          {
             while (rdr.Read())
              data.Add(new datalist7(rdr.GetString(0), rdr.GetString(1),rdr.GetString(2),rdr.GetString(3),rdr.GetString(4),rdr.GetString(5),rdr.GetString(6)));
          }
          con.Close();
          return data;
      }

C#
[DataContract]
    public class datalist7
    {
        [DataMember]
        public string val1 { get; set; }
        [DataMember]
        public string val2 { get; set; }
        [DataMember]
        public string val3 { get; set; }
        [DataMember]
        public string val4 { get; set; }
        [DataMember]
        public string val5 { get; set; }
        [DataMember]
        public string val6 { get; set; }
        [DataMember]
        public string val7 { get; set; }
        public datalist7(string v1, string v2, string v3, string v4, string v5, string v6, string v7)
        {
            val1 = v1;
            val2 = v2;
            val3 = v3;
            val4 = v4;
            val5 = v5;
            val6 = v6;
            val7 = v7;
        }

    }


but when i am invoking my service i am getting this exception what was the reason
Index was outside the bounds of the array.
Posted

1 solution

because you selecting only Compcode,Acct_sub0 from your database but you try to get 7 values in each record in below code line
F#
data.Add(new datalist7(rdr.GetString(0), rdr.GetString(1),rdr.GetString(2),rdr.GetString(3),rdr.GetString(4),rdr.GetString(5),rdr.GetString(6)));


change the sql statement to return 7 fields or only read the columns which returning from the data reader.

if you only need two columns then change above line to
C#
data.Add(new datalist7(rdr.GetString(0), rdr.GetString(1),"","","","",""));//sending empty lines for other fields
 
Share this answer
 
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900