-1

我有一个如下所示的 SQL 表

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"] 始终是第一个答案......我如何循环遍历表中的每一行并返回值?

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

4

2 回答 2

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;
    }
于 2012-05-02T19:38:19.210 回答
1

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

于 2012-05-02T19:40:45.013 回答