c# - How to get data from SqlDataReader to Array of arrays or Array of strings -


i'm trying populate array of arrays sqldatareader, in end rows of array filled same array of numbers.

here's t-sql code:

select      sum(memberattendants),     groups.name,     datepart(wk,convert(datetime,convert(varchar,statisticsdate),104))      stat.dbo.groupstatistics  inner join      stat.dbo.groups on groupstatistics.groupid = groups.groupid       (groups.organizationid = '4960')  group      groups.name, convert(datetime, convert(varchar, statisticsdate), 104) order      groups.name, convert(datetime, convert(varchar, statisticsdate), 104) 

c# code:

sqldatareader myreader1 = cmd1.executereader();  if (myreader1.hasrows) {     int = 0, j = 0;     string[] name;     name = new string[100];     int[][] mainarray = new int[100][];      int[] activityarray;     activityarray = new int[52];     int[] weekofactivity;     weekofactivity = new int[52];     bool myflag = false;      (int mycounter = 0; mycounter <= myreader1.fieldcount; mycounter++)     {         aktivitet[mycounter] = new int[mycounter];     }      while (myreader1.read())     {       if (!myreader1.isdbnull(0) && !myreader1.isdbnull(1))       {         if (i == 0 || myreader1.getstring(1) == name[i-1]  || myflag == true)         {            if (myflag == true && myreader1.getstring(1) != name[i-1])            {               = 0;               mainarray[j] = activityarray;            }            myflag = false;            activityarray[i] = myreader1.getint32(0);            name[i] = myreader1.getstring(1);            i++;        }        else        {            mainarray[j] = activityarray;            j++;            = 0;            name[i] = myreader1.getstring(1);            activityarray[i] = myreader1.getint32(0);            i++;            myflag = true;        }    } }  mainarray[j] = activityarray; 

how can fill mainarray without last activityarray overwrite rows in mainarray?

tnx

what you're missing here array reference type. when say:

mainarray[j] = activityarray 

you're setting entry in mainarray point activityarray. never create new activityarray, point same place.

because you're over-writing content of activityarray, you're over-writing entries in mainarray (because same entry).

so, probably want

while (myreader1.read()) {     activityarray = new int[52];     if (!myreader1.isdbnull(0) && !myreader1.isdbnull(1))     { 

the reason have put because it's not clear me code trying do.


Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -