2016-05-03 15 views
-3

クイズの追加部分を作成しました。ここでadminはguestに質問を追加します。C#とデータベースを使用してクイズアプリケーションを作成します

私が次のボタンをクリックしたとき、私は追加した最後の質問を見るだけです。ここでは、コードは次のようになります。

SqlConnection con = new SqlConnection(@"Data Source=MARIA-PC;Initial Catalog=Account;Integrated Security=True"); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("SELECT * FROM [dbo].[QuestAdd] WHERE Class = '1'", con); 
     SqlDataReader reader = null; 
     reader = cmd.ExecuteReader(); 
     while (reader.Read()) 
     { 
      textBox2.Text = (reader["Question"].ToString()); 
      textBox3.Text = (reader["R1"].ToString()); 
      textBox4.Text = (reader["R2"].ToString()); 
      textBox5.Text = (reader["R3"].ToString()); 
      textBox6.Text = (reader["R4"].ToString()); 
      if (textBox7.Text == (reader["R_correct"].ToString())) 
       point = point + 1; 
     } 
     con.Close(); 

私の問題は、私はテーブルにちょうど最後の質問のalthougを参照してください、私は複数の質問があり、なぜ私にはわからないということです。

+0

「次のボタン」のコードはどこですか? –

+0

whileループが終了すると、テキストボックスに最後の行の詳細が含まれます.. – Sachu

+1

あなたが読んでいるすべてのレコードが次のもので上書きされていて、最後に最後のものが表示されています – Mostafiz

答えて

-1

すべての結果をループし、クエリの各行のテキストボックス値を上書きしています。

上記のコードでは、これを実行するたびに、取得された最後の行だけが表示されます。

データを取得してデータ構造に保存し、これを使用する次のボタンを記録する方がよい場合があります。

//Set up datatable with all questions 

DataTable dt=new DataTable(); 
dt.column.Add("Question",typeof(string)); 
dt.column.Add("R1",typeof(string)); 
dt.column.Add("R2",typeof(string)); 
dt.column.Add("R3",typeof(string)); 
dt.column.Add("R4",typeof(string)); 
dt.column.Add("R_correct",typeof(int)); 

SqlConnection con = new SqlConnection(@"Data Source=MARIA-PC;Initial Catalog=Account;Integrated Security=True"); 
con.Open(); 
SqlCommand cmd = new SqlCommand("SELECT * FROM [dbo].[QuestAdd] WHERE Class = '1'", con); 
SqlDataReader reader = null; 
reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    DataRow dr=dt.NewRow(); 
    dr["Question"] = (reader["Question"].ToString()); 
    dr["R1"] = (reader["R1"].ToString()); 
    dr["R2"] = (reader["R2"].ToString()); 
    dr["R3"] = (reader["R3"].ToString()); 
    dr["R4"] = (reader["R4"].ToString()); 
    dr["R_correct"] = (reader["R_correct"]); 
    dt.Rows.Add(dr); 

} 
con.Close(); 

ここではデータテーブルを使用しましたが、オブジェクトのリストも簡単に使用できます。 上記のコードでは、クエリのデータをデータテーブルに追加するだけで、次のボタンで行番号を変更するコードを記述することができます。

これはほんの始まりですが、正しい軌道に乗るはずです

+0

を試してみます。どうすればデータ構造に保存できますか? – domado

+0

@domado例を示すために上に編集 –

+0

あなたが知っているなら別の質問があります。これをテキストボックスでどのように表示できますか? 1つのテキストボックスに質問し、別のテキストボックスにR1を... – domado

関連する問題