-2

Getting a error as 'Index was out of range. Must be non-negative and less than the size of the collection'.

I am passing a bind varaible line_id from the button i created from html page into the query. Need your valuable help on this issue. Thanks.

 public void OnGet()
    {
        String line_id = Request.Query["line_id"];
        Console.WriteLine(line_id);

        try 
        {
            string connectionString = "";
            using (SnowflakeDbConnection connection = new SnowflakeDbConnection(connectionString))
            {
                connection.Open();
                String sql = "select * from CX_DB.CX_GSLOBAC_BR.XXBAC_SDPOP_FAILURE_REASONS_DUMMY where LINE_ID = :line_id";
                Console.WriteLine(sql);
                using (SnowflakeDbCommand command = new SnowflakeDbCommand(connection, sql))
                {
                    command.Parameters.Add(new SnowflakeDbParameter("line_id", Snowflake.Data.Core.SFDataType.TEXT));
                    command.Parameters[":line_id"].Value = line_id;

                    using (SnowflakeDbDataReader reader = (SnowflakeDbDataReader)command.ExecuteReader())
                    {

                        if (reader.Read())
                        {
                            Failureinfo failureinfo = new Failureinfo();
                            failureinfo.FA_KEY = reader.GetString(0);
                            failureinfo.LINE_ID = "" + reader.GetInt32(1);
                            failureinfo.THEATER = reader.GetString(2);
                            failureinfo.FR_ID = reader.GetString(3);
                            failureinfo.FR = reader.GetString(4);
                            failureinfo.OWNER = reader.GetString(5);
                            failureinfo.NOTES = reader.GetString(6);
                            failureinfo.FR_CODE = reader.GetString(7);
                            failureinfo.F_TYPE = reader.GetString(8);
                            failureinfo.FAILURE_CATEGORY_L3 = reader.GetString(9);
                            failureinfo.LEAD_ORG = reader.GetString(10);
                            failureinfo.FAILURE_CATEGORY_L2 = reader.GetString(11);
                            failureinfo.FAILURE_CATEGORY_L1 = reader.GetString(12);
                            failureinfo.REPORT_CODE = reader.GetString(13);

                        }
                    }
                }


            }

        }
Panagiotis Kanavos
  • 120,703
  • 13
  • 188
  • 236

1 Answers1

1

your sql select * from CX_DB.CX_GSLOBAC_BR.XXBAC_SDPOP_FAILURE returns less that 14 columns and thus makes

failureinfo.REPORT_CODE = reader.GetString(13); 

out of bounds. (If returning even less then even earlier calls would throw exception)

jaro
  • 211
  • 2
  • 7