C# Object Problem - Can't Solve It

Posted by user612041 on Stack Overflow See other posts from Stack Overflow or by user612041
Published on 2011-07-19T20:18:51Z Indexed on 2012/04/05 23:29 UTC
Read the original article Hit count: 201

Filed under:

I'm getting the error 'Object reference not set to an instance of an object'. I've tried looking at similar problems but genuinely cannot see what the problem is with my program. The line of code that I am having an error with is:

labelQuestion.Text = table.Rows[0]["Question"].ToString();

Here is my code in its entirety:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.Sql;
using System.Data.SqlClient;

namespace Quiz_Test
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    String chosenAnswer, correctAnswer;
    DataTable table;

    private void Form1_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()";

        OleDbDataReader reader = cmdGet.ExecuteReader();
        reader.Read();
        labelQuestion.Text = table.Rows[0]["Question"].ToString();
        radioButton1.Text = table.Rows[0]["Answer 1"].ToString();
        radioButton2.Text = table.Rows[0]["Answer 2"].ToString();
        radioButton3.Text = table.Rows[0]["Answer 3"].ToString();
        radioButton4.Text = table.Rows[0]["Answer 4"].ToString();
        correctAnswer = table.Rows[0]["Correct Answer"].ToString(); ;


        conGet.Close();

    }

    private void btnSelect_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();

            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++;
                MessageBox.Show("You have got this answer correct");
                //label2.Text = "You have got " + chosenCorrectly + " answers correct";
            }
            else
            {
                MessageBox.Show("That is not the correct answer");
            }
        }
    }
}

}

I realise the problem isn't too big but I can't see how my declaration timings are wrong

© Stack Overflow or respective owner

Related posts about c#