paras patel Ответов: 1

Помогите для этого массива решить


Server Error in '/wwwroot' Application.

There is no row at position 1.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IndexOutOfRangeException: There is no row at position 1.

Source Error: 


Line 135:            for (int j = 0; j < b; j++)
Line 136:            {
Line 137:                pp[i] += con.QueryEx().Rows[i][j].ToString();
Line 138:                if (j == b - 1)
Line 139:                {

Source File: c:\inetpub\wwwroot\Gujarati_sms.aspx.cs    Line: 137 

Stack Trace: 




для этого кода
бежать


int p = con.QueryEx().Rows.Count;
       int b = con.QueryEx().Columns.Count;
       for (int i = 0; i < p; i++)
       {
           for (int j = 0; j < b; j++)
           {
               pp[i] += con.QueryEx().Rows[i][j].ToString();
               if (j == b - 1)
               {
                  // TextBox3.Text += pp[i];
                  con.SqlQuery("insert into Sms_Genrate(Message) values ('" + pp[i] + "')");
                   con.NonQueryEx();
               }
           }
           TextBox3.Text += tt + "\r\n";
       }


Что я уже пробовал:

пожалуйста, помогите всем типам использовать I массив, простую строку, но все строки не вставляются только первые строки вставляются после вышеуказанной ошибки

1 Ответов

Рейтинг:
1

Suvendu Shekhar Giri

Ваш метод возвращает a DataTable возражать?
Если нет, вся ваша логика может потерпеть неудачу.

Если да, то вы не ставили никакой проверки на то, что datatable действительно содержит строку или нет. Таким образом, следующая строка кода вызовет ошибку при наличии пустой таблицы данных.

pp[i] += con.QueryEx().Rows[i][j].ToString();
//will be evaluated to following
pp[0] += con.QueryEx().Rows[0][0].ToString();


Он проходит предыдущие шаги, так как количество строк и столбцов равно 0, но выдаст ошибку в приведенной выше строке.

Попробуйте поставить какую-нибудь проверку, например-
int p = con.QueryEx().Rows.Count;
int b = con.QueryEx().Columns.Count;
if(p>0)
{
   for (int i = 0; i < p; i++)
   {
      //rest of the logic here
   }
} 


Надеюсь, это поможет :)