C#测验代码无法正常工作

时间:2011-07-15 10:43:03

标签: c# ms-access

我正在进行一项测试,但是在尝试增加其复杂性后,它不能完全正常工作。目前发生的一切是我的Access数据库表中可能的答案绑定到我的C#表单上的每个单选按钮。

这部分没问题,但是,点击我的按钮后不再告诉我我选择的答案是否正确。我现在正在使用标签告诉用户答案是否正确。

这是我的代码:

namespace WindowsFormsApplication1
{
    public partial class quizQuestions : Form
    {
        public quizQuestions()
        {
            InitializeComponent();
        }
        //int questionNumber;
        //String correctAnswer;
        private void WindowsAnalysisQuiz_Load(object sender, EventArgs e)
        {
            //declare connection string using windows security
            string cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\quizQuestions.accdb";

            //declare Connection, command and other related objects
            OleDbConnection conGet = new OleDbConnection(cnString);
            OleDbCommand cmdGet = new OleDbCommand();

            //try
            //{
            //open connection
            conGet.Open();
            String correctAnswer;

            cmdGet.CommandType = CommandType.Text;
            cmdGet.Connection = conGet;

            cmdGet.CommandText = "SELECT * FROM quizQuestions ORDER BY rnd()"; // select all columns in all rows

            OleDbDataReader reader = cmdGet.ExecuteReader();
            reader.Read();
            label1.Text = reader["Question"].ToString();
            radioButton1.Text = reader["Answer 1"].ToString(); 
            radioButton2.Text = reader["Answer 2"].ToString();
            radioButton3.Text = reader["Answer 3"].ToString();
            radioButton4.Text = reader["Answer 4"].ToString();
            correctAnswer = reader["Correct Answer"].ToString();
            //questionNumber = 1;

            conGet.Close();

        }

        private void btnNextQuestion_Click(object sender, EventArgs e)
        {

            String cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\quizQuestions.accdb";

            //declare Connection, command and other related objects
            OleDbConnection conGet = new OleDbConnection(cnString);
            OleDbCommand cmdGet = new OleDbCommand();

            //try
            {
                //open connection
                conGet.Open();

                cmdGet.CommandType = CommandType.Text;
                cmdGet.Connection = conGet;

                //cmdGet.CommandText = "SELECT * FROM quizQuestions ORDER BY rnd()"; // select all columns in all rows

                OleDbDataReader reader = cmdGet.ExecuteReader();
                reader.Read();

                String chosenAnswer = "";
                int chosenCorrectly = 0;
                if (radioButton1.Checked)
                {
                    chosenAnswer = reader["Answer 1"].ToString();
                }
                else if (radioButton2.Checked)
                {
                    chosenAnswer = reader["Answer 2"].ToString();
                }
                else if (radioButton3.Checked)
                {
                    chosenAnswer = reader["Answer 3"].ToString();
                }
                else
                {
                    chosenAnswer = reader["Answer 4"].ToString();
                }

                if (chosenAnswer == reader["Correct Answer"].ToString())
                {
                    //chosenCorrectly++;
                    label2.Text = "You have got this answer correct";
                    //label2.Text = "You have got " + chosenCorrectly + " answers correct";
                }
                else
                {
                    MessageBox.Show("That is not the correct answer");
                }
            }

        }
    }
}

总而言之,可能的答案会加载到表单中,但是当我按下表单上的按钮以确定是否选择了正确的答案时,一切都没有发生。

3 个答案:

答案 0 :(得分:0)

您没有在代码中的任何位置约束btnNextQuestion_Click,并且您未在cmdGet.CommandText函数中提供btnNextQuestion_Click。您可能必须更具体地了解未发生的事情。你调试了吗?

答案 1 :(得分:0)

如果真的“没有”发生,那么你应该检查按钮的click事件是否仍然绑定到事件处理程序。

您已注释掉为查询设置CommandText的行,因此您尝试执行不带查询集的命令,这会给您一个例外。

答案 2 :(得分:0)

我认为你所拥有的东西是非常错误的。您正在为Text属性分配答案,并且已在字符串中包含正确的答案。

只需针对选中的RadioButton文字检查相同内容,您就会知道。 另外很难猜到你在btnNextQuestion_Click事件中查询的是什么,我有我的预订,因为它实际上是当前显示的问题,也是用户选择的答案。