C#/Mysql 测验仅 5 个问题

标签 c# mysql

我的代码有一点问题,希望你能帮助我。

我正在尝试编写一个在表单上显示问题的测验, 您可以通过单击 5 个答案按钮之一来回答这些问题。 问题存储在 Mysql 数据库中。

在每场游戏中玩家必须回答 5 个问题, 问题来了:

5 个问题之后,它不会进入计分页面。

如何解决这个问题?

这是我的尝试:

     public int richtig;

        int Counter = 0;
        string Loesung, AntwortA_value, AntwortB_value, AntwortC_value, AntwortD_value, AntwortE_value;

        string cmdText = "SELECT fragen,A,B,C,D,E,Loesungen from Fragen order by Rand() Limit 1;";
        string MyConString = "SERVER=localhost;DATABASE=quiz;UID=xxx;PASSWORD=xxx;";

        public Fragen()
        {
            InitializeComponent();
            Questions();

        }

        private void Antworten_Click(object sender, EventArgs e)
        {
            if (Counter != 4)
            {
                Questions();
                Counter++;
            }
            else
            {

            }


        }

        private void Questions()
        {
            if (Counter != 5)
            {
                using (MySqlConnection connection = new MySqlConnection(MyConString))
                {
                    try
                    {
                        MySqlCommand cmd = new MySqlCommand(cmdText, connection);
                        connection.Open();
                        MySqlDataReader reader = cmd.ExecuteReader();

                        while (reader.Read())
                        {
                            FragenTitel.Text = (reader[0].ToString());
                            AntwortA.Text = (reader[1].ToString());
                            AntwortB.Text = (reader[2].ToString());
                            AntwortC.Text = (reader[3].ToString());
                            AntwortD.Text = (reader[4].ToString());
                            AntwortE.Text = (reader[5].ToString());
                            Loesung = (reader[6].ToString());

                            AntwortA_value = (reader[1].ToString());
                            AntwortB_value = (reader[2].ToString());
                            AntwortC_value = (reader[3].ToString());
                            AntwortD_value = (reader[4].ToString());
                            AntwortE_value = (reader[5].ToString());
                        }
                        reader.Close();
                        connection.Close();

                        //lblError.Text = "Data Saved";
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("not entered");
                        //lblError.Text = ex.Message;
                    }

                }
            }
            else
            {
                Auswertungen Aw = new Auswertungen();
                Aw.Show();
            }

            Counter = richtig;
        }

        #region Antwortbuttons

        private void AntwortButtonA_Click(object sender, EventArgs e)
        {
            if (AntwortA_value == Loesung)
            {
                MessageBox.Show("Richtig");
                Counter++;
                richtig++;
                Questions();
            }
            else
            {
                MessageBox.Show("Falsch");
                Counter++;
                Questions();
            }
        }

        private void AntwortButtonB_Click(object sender, EventArgs e)
        {
            if (AntwortB_value == Loesung)
            {
                MessageBox.Show("Richtig");
                Counter++;
                richtig++;
                Questions();
            }
            else
            {
                MessageBox.Show("Falsch");
                Counter++;
                Questions();
            }
        }

        private void AntwortButtonC_Click(object sender, EventArgs e)
        {
            if (AntwortB_value == Loesung)
            {
                MessageBox.Show("Richtig");
                Counter++;
                richtig++;
                Questions();
            }
            else
            {
                MessageBox.Show("Falsch");
                Counter++;
                Questions();
            }
        }

        private void AntwortButtonD_Click(object sender, EventArgs e)
        {
            if (AntwortD_value == Loesung)
            {
                MessageBox.Show("Richtig");
                Counter++;
                richtig++;
                Questions();
            }
            else
            {
                MessageBox.Show("Falsch");
                Counter++;
                Questions();
            }
        }

        private void AntwortButtonE_Click(object sender, EventArgs e)
        {
            if (AntwortE_value == Loesung)
            {
                MessageBox.Show("Richtig");
                Counter++;
                richtig++;
                Questions();
            }
            else
            {
                MessageBox.Show("Falsch");
                Counter++;
                Questions();
            }
        #endregion


        }

        private void Score_uebername()
        {
          //  richtig = Auswertungen.Punktzahl;
        }

    }
}

最佳答案

问题出在这里:

 if (Counter != 4)
            {
                Questions();
                Counter++;
            }
            else
            {

            }

这种和平的代码永远不会让计数器达到 5,这意味着这种情况:

if (Counter != 5)
            {
               ....
            }
            else <--this condition is never met because Counter never gets to 5
            {
                Auswertungen Aw = new Auswertungen();
                Aw.Show();
            }

一旦用户回答了 5 个问题(计数器=4),程序就会在空的 else block 中空闲。

关于C#/Mysql 测验仅 5 个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31180931/

相关文章:

c# - List<Nullable<T>> 的运行时指令

c# - 如何将异常消息转发到 Rebus 错误队列

MySQL:如何找到某些值的不间断序列的最大长度?

php - 无法使用 MDB2 连接到 MySQL 数据库(未找到错误)

mysql - 在 MySQL 中使用 NOT IN 和 OR 无法按预期工作

mysql - 在 Ubuntu 上更改默认的 mysql 存储引擎

mysql - 如果目标位于一个表中而事件位于另一个表中,如何显示实现不同目标的进度

c# - 如何使用Identity 2.0使用Authorize属性在行动中添加多个策略?

c# - 为 lambda 声明提供的参数数量不正确

c# - 将数据表行插入数据库的简单方法