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
Post a Comment