Vicky Siddharth Ответов: 2

Как получить доступ к определенной строке в datareader ?


Привет, я получил память из исключения во время загрузки массовых отчетов . Поэтому я изменяю код, используя DATAREADER вместо DATASET . Как достичь приведенного ниже кода в DataReader потому что я беспомощен использовать любые datatables & amp; dataset в своем кодировании.

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

if (dataSet.Tables[0].Rows[i + 1]["Sr No"].ToString() == dataSet.Tables[0].Rows[i]["Sr No"].ToString())

Tomas Takac

Я не понимаю, что мешает вам использовать datareader ["Sr No"]?

Vicky Siddharth

Привет, Томас. while (datareader. read ()) { i) цикл идет в первый раз, когда он берет 1 запись из набора записей
ii) здесь я хочу получить доступ к значению записи 2 .
}
как мы можем достичь ?

Karthik_Mahalingam

Всегда использовать  Ответить   кнопка для отправки комментариев / запросов заинтересованному пользователю, иначе пользователь не получит уведомления.

Vicky Siddharth

ОК Картик

Karthik_Mahalingam

:)

2 Ответов

Рейтинг:
4

Tomas Takac

DataReader не имеет произвольного доступа. Вам нужно "запомнить" значение из предыдущей строки.

string previous = null;
string current = null;
bool isFirst = true;

while (datareader.Read())
{
    current = datareader["Sr No"].ToString();
    
    if (isFirst)
    {
        // skip the first row because we don't have anything to compare it to
        isFirst = false;
    }
    else if(current == previous)
    {
        // do your thing here
    }
    
    previous = current;
}


Рейтинг:
20

OriginalGriff

DataReader работает только путем чтения вперед через набор данных: вы не можете указать значение произвольного доступа, чтобы "пропустить" определенную строку.
Единственный способ получить доступ к строке в DataReader - это использовать цикл для чтения каждой строки до точки, где вы достигнете нужной строки. Но ... вы не можете пойти "назад" к более ранним рядам, как только вы прошли мимо них.
Если у вас возникли проблемы с чтением всех строк сразу, подумайте о том, чтобы либо "подкачать" количество строк, которые Вы читаете в DataAdapter, либо выдать отдельные запросы на чтение только для тех строк, которые вас интересуют.