2

I have coded function as following, and I am getting error, I am trying to get items details from DB by this method which returns string.

    public static string GetItemDetails(int i_id, string i_name)
    {
        MySqlConnection SQL_con = new MySqlConnection(VPconfig.sql_conns);
        string[] ItemData = null;
        i_name = i_name == null ? string.Empty : i_name;
        i_id = i_id == 0 ? 0 : i_id;

        try
        {
            if(i_id != 0)
            {
                //get Item details by ID
                string query = "SELECT * FROM items WHERE id="+i_id;
                MySqlCommand xv = new MySqlCommand(query, SQL_con);
                SQL_con.Open();
                MySqlDataReader rdr = xv.ExecuteReader();
                while(rdr.Read())
                {
                    ItemData[0] = rdr.GetString("id");
                    ItemData[1] = rdr.GetString("iname");
                    ItemData[2] = rdr.GetString("iprice");
                }
                SQL_con.Close();

                string master = ItemData[0] +"*"+ ItemData[1] +"*"+ ItemData[2];

                return master;//Return format ID*NAME*PRICE
            }
            else if(i_name != string.Empty)
            {
                //get Item details by Name
                string query = "SELECT * FROM items WHERE iname=" + i_name;
                MySqlCommand xv = new MySqlCommand(query, SQL_con);
                SQL_con.Open();
                MySqlDataReader rdr = xv.ExecuteReader();
                while (rdr.Read())
                {
                    ItemData[0] = rdr.GetString("id");
                    ItemData[1] = rdr.GetString("iname");
                    ItemData[2] = rdr.GetString("iprice");
                }
                SQL_con.Close();

                string master = ItemData[0] + "*" + ItemData[1] + "*" + ItemData[2];

                return master;//Return format ID*NAME*PRICE
            }
            else
            {
                MessageBox.Show("No Items! found with ID/Name: " + i_id + i_name);
            }

            //if nothing
            return null;
        }
        catch(Exception ex)
        {
            MessageBox.Show("Error Code: 17 "+ex.Message);

            //if nothing
            return null;
        }

Now, if I pass following argument is showing error "Error Code :17 object reference not set to an instance of an object." which basically from catch,

string xv = VPfunctions.GetItemDetails(5, string.Empty);
ta.Text = xv;

Thank you.

rjps12
  • 587
  • 6
  • 15

1 Answers1

1

The exception thrown because you declared string array with null and then you assign its value in the DataReader loop.

So, this line:

string[] ItemData = null;

Should be changed to something like this:

string[] ItemData = new string[5];
Hermanto
  • 552
  • 6
  • 15