我需要使用10個問題創建一個在線測試。我有30個問題存儲在數據庫中,每次開始測試時,都必須隨機挑選10個問題。我設法在一個標籤上顯示問題,但我展示了所有這些問題。我需要什麼代碼纔會顯示10個問題?此外,因爲是多項選擇答案,我需要將每個答案選項分配給一個單選按鈕。答案也存儲在數據庫中。我到目前爲止已經做了(我已經張貼了相關的代碼只):使用C#中的訪問數據庫創建在線測試
代碼在DBConnection的類:
public static List<Questions> LoadQuestions()
{
List<Questions> quest = new List<Questions>();
OleDbConnection myConnection = GetConnection();
string myQuery = "SELECT * FROM Questions";
OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection);
try
{
myConnection.Open();
OleDbDataReader reader = myCommand.ExecuteReader();
while (reader.Read())
{
Questions q = new Questions(Int32.Parse(reader["ID"].ToString()),
reader["QuestionBody"].ToString(),
reader["CorrectAnswer"].ToString());
quest.Add(q);
}
return quest;
}
catch (Exception ex)
{
Console.WriteLine("Exception in DBHandler" + ex);
return null;
}
finally
{
myConnection.Close();
}
}
public static List<Answers> LoadAnswers()
{
List<Answers> answers = new List<Answers>();
OleDbConnection myConnection = GetConnection();
string myQuery = "SELECT * FROM Answers";
OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection);
try
{
myConnection.Open();
OleDbDataReader reader = myCommand.ExecuteReader();
while (reader.Read())
{
Answers a = new Answers(Int32.Parse(reader["ID"].ToString()),
reader["AnswerA"].ToString(),
reader["AnswerB"].ToString(),
reader["AnswerC"].ToString(),
(Int32.Parse(reader["QuestionId"].ToString())));
answers.Add(a);
}
return answers;
}
catch (Exception ex)
{
Console.WriteLine("Exception in DBHandler" + ex);
return null;
}
finally
{
myConnection.Close();
}
}
代碼在Test.aspx
:
protected void Page_Load(object sender, EventArgs e)
{
List<Questions> QList = DatabaseConnecter.LoadQuestions();
Random rndNumber = new Random();
int randomQuest = rndNumber.Next(30);
lblQuest.Text = QList[randomQuest].QuestionBody;
List<Answers> AList = DatabaseConnecter.LoadAnswers();
int a = 30;
rbAnswer1.Text = AList[a].AnswerA;
}
我得到了列表行上發生以下錯誤
「未將對象引用設置爲對象的實例」。
標籤(lbwQuest
)顯示的問題很好。問題出在答案和單選按鈕(rbAnswer1
,rbAnswer2
,rbAnswer3
)。另外,在數據庫中,我有兩個表 - 包含列的問題 - ID,QuestionBody,CorrectAnswer和帶列的答案 - ID,QuestionID,AnswerA,AnswerB,AnswerC。
「我在列表行中有以下錯誤」你是什麼意思的「列表」行? – 2012-01-07 02:35:08
對不起,我不是特定的。我的意思是最後一行。這就是:rbAnswer1.Text = AList [a] .AnswerA – user1135433 2012-01-07 02:53:04
列表'AList'可能沒有被實例化。 'DatabaseConnecter.LoadAnswers();'應該返回什麼。確保它正確地返回你所期望的。 – Lion 2012-01-07 02:58:47