循环记录并分配给哈希表

时间:2012-05-02 19:35:18

标签: c# asp.net sql hashtable

我有一个SQL表格,如下所示

QuestionNumber  UserAnswer

1                   4
2                   11
3                   3
4                   2
5                   Y
6                   5
7                   4
8                   1
9                   34
10                  3

QuestionNumber UserAnswer 1 4 2 11 3 3 4 2 5 Y 6 5 7 4 8 1 9 34 10 3

我试图循环遍历每个值并将其分配给哈希表,然后返回哈希表等

 SqlConnection Connection = new SQLAccess().CreateConnection();
                SqlCommand Command = new SqlCommand("GetAllExamAnswersForUser", Connection);
                Command.CommandType = System.Data.CommandType.StoredProcedure;
                Command.Parameters.AddWithValue("@UserID", UserID);
                SqlDataReader da = Command.ExecuteReader();


    while (da.Read())
                    {
                        Details.Add("QuestionNumber1", da["UserAnswer"]);
                        Details.Add("QuestionNumber2", da["UserAnswer"]);
                        Details.Add("QuestionNumber3", da["UserAnswer"]);
                        Details.Add("QuestionNumber4", da["UserAnswer"]);
                        Details.Add("QuestionNumber5", da["UserAnswer"]);
                        Details.Add("QuestionNumber6", da["UserAnswer"]);
                        Details.Add("QuestionNumber7", da["UserAnswer"]);
                        Details.Add("QuestionNumber8", da["UserAnswer"]);
                        Details.Add("QuestionNumber9", da["UserAnswer"]);
                        Details.Add("QuestionNumber10", da["UserAnswer"]);

    }

但无论我做什么da [“UserAnswer”]始终是第一个答案......我如何循环遍历表格中的每一行并返回值?

请有人帮助我,让我摆脱痛苦......: - (

2 个答案:

答案 0 :(得分:4)

  

但无论我做什么,da [“UserAnswer”]始终是第一个答案......

嗯,我认为它始终是最后的答案。你覆盖以前的所有。

每次进行while循环时都会得到一条新记录,而QuestionNumber也是一列:

   while (da.Read())
   {
         string answer = da["UserAnswer"];
         string question = da["QuestionNumber"];
         Details.Add(question, answer);           // one per record
    }

或者当您想要(重新)编号时:

   int i = 1;
   while (da.Read())
   {
        //Details.Add("QuestionNumber1", da["UserAnswer"]);
        //Details.Add("QuestionNumber2", da["UserAnswer"]);
        //...

         Details.Add("QuestionNumber" + i, da["UserAnswer"]);
         i = i + 1;
    }

答案 1 :(得分:1)

.Read一次推进一条记录。您的每个da [“UserAnswer”]调用都在同一条记录上运行。