Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据从SqlDataReader获取到数组数组或字符串数组_C#_Sql Server_Arrays - Fatal编程技术网

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))
    {