C# 如何将数据从SqlDataReader获取到数组数组或字符串数组
我试图从一个C# 如何将数据从SqlDataReader获取到数组数组或字符串数组,c#,sql-server,arrays,C#,Sql Server,Arrays,我试图从一个SqlDataReader填充一个数组数组,但最后数组的所有行都用相同的数字数组填充 以下是我的T-SQL代码: SELECT SUM(memberAttendants), Groups.Name, DATEPART(wk,convert(datetime,convert(varchar,StatisticsDate),104)) FROM Stat.dbo.GroupStatistics INNER JOIN Stat.dbo.Gro
SqlDataReader
填充一个数组数组,但最后数组的所有行都用相同的数字数组填充
以下是我的T-SQL代码:
SELECT
SUM(memberAttendants),
Groups.Name,
DATEPART(wk,convert(datetime,convert(varchar,StatisticsDate),104))
FROM
Stat.dbo.GroupStatistics
INNER JOIN
Stat.dbo.Groups ON GroupStatistics.GroupID = Groups.GroupID
WHERE
(Groups.OrganizationID = '4960')
GROUP BY
Groups.Name, convert(datetime, convert(varchar, StatisticsDate), 104)
ORDER BY
Groups.Name, convert(datetime, convert(varchar, StatisticsDate), 104)
C#代码:
SqlDataReader-myReader1=cmd1.ExecuteReader();
if(myReader1.HasRows)
{
int i=0,j=0;
字符串[]名称;
名称=新字符串[100];
int[][]MainArray=新的int[100][];
int[]活动数组;
ActivityArray=新整数[52];
int[]活动;
WeekOfActivity=新整数[52];
bool myFlag=false;
对于(int myCounter=0;myCounter而言,这里缺少的是数组是引用类型。因此,当您说:
MainArray[j] = ActivityArray
您正在将MainArray中的条目设置为指向ActivityArray。您从未创建新的ActivityArray,因此它们都指向同一个位置
因为您过度写入了ActivityArray的内容,所以实际上您过度写入了MainArray中的所有条目(因为它们都是相同的条目)
所以,你可能想要
while (myReader1.Read())
{
ActivityArray = new int[52];
if (!myReader1.IsDBNull(0) && !myReader1.IsDBNull(1))
{
我之所以这么说,可能是因为我不太清楚您的代码试图做什么。您知道可以使用具有行和列的DataTable…对吗?@ShadowWizard当然不对。:)@Ehsanaullah有时人们知道正确的方式,只是为了好玩或奇怪的项目需求而尝试不同的方式,所以要确保:)就是这样!Tnx。我尝试的是在主阵列中获得不同类型活动的每周参与者人数。活动可以是:篮球、足球、吉他、舞蹈。。。
while (myReader1.Read())
{
ActivityArray = new int[52];
if (!myReader1.IsDBNull(0) && !myReader1.IsDBNull(1))
{