I have a SQL table laid out like the below
QuestionNumber UserAnswer 1 4 2 11 3 3 4 2 5 Y 6 5 7 4 8 1 9 34 10 3
Im trying to loop through each value and assign it to a hashtable and then return the hashtable etc
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"]); }
But no matter what i do da["UserAnswer"] is always the first answer...how can i loop through each row in my table and return the values?
Please can someone help me and put me out of my misery.... :-(
But no matter what i do da["UserAnswer"] is always the first answer...
Hmm, I would think it is always the last answer. You overwrite all previous ones.
You get a new record each time you go through the while loop, and QuestionNumber is a column too:
while (da.Read())
{
string answer = da["UserAnswer"];
string question = da["QuestionNumber"];
Details.Add(question, answer); // one per record
}
Or when you want to (re)number by yourself:
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;
}
.Read advances one record at a time. Each of your da["UserAnswer"] calls is operating on the same record.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.