Получение данных SQL - C #

как мне получить данные из таблицы в цикле или что-то в этом роде. Это означает, что я хочу извлекать строку за строкой за раз. но последовательность строк может отличаться. Например, 1-й раз мне нужна 5-я строка, затем 2-я, затем 9 ... и так далее.

Я поискал в интернете. Я получил только два ответа.

  1. Используйте несколько объектов SqlConnection.

  2. reader = sqlCommand.ExecuteReader (); Пока (reader.Read ()) {reader ["Имя столбца"]. ToString (); }

Если у вас возникла моя проблема, пожалуйста, помогите мне Спасибо.


person sura2k    schedule 20.12.2010    source источник
comment
Как вы определяете порядок извлечения строк? Может быть, ваш запрос можно переписать, чтобы он возвращал только соответствующие строки?   -  person SWeko    schedule 20.12.2010


Ответы (5)


Похоже, вам следует исправить уровень данных, чтобы возвращать значения в том порядке, в котором вы собираетесь их обрабатывать. Было бы проще и быстрее всех! :)

В качестве альтернативы я предлагаю вам загрузить свой результат в DataTable:

    DataTable table = new DataTable();
    using ( SqlCommand command = new SqlCommand() )
    {
           // TODO: Set up your command here
        using (SqlDataAdapter adapter = new SqlDataAdapter(command))
        {
            adapter.Fill(table);
        }
    }

    // Use your DataTable like this...

    if ( table.Rows.Count >= 5 ) {
        DataRow firstRow = table.Rows[0]; // #1 row
        DataRow fifthRow = table.Rows[4]; // #5 row
        DataRow secondRow = table.Rows[1]; // #2 row
    }

/Алекс

person Alex    schedule 20.12.2010

Вероятно, лучше всего прочитать ваши данные в DataSet, как показано в этом примере:

http://quickstart.developerfusion.co.uk/quickstart/howto/doc/adoplus/GetDataFromDB.aspx

person Mike Chamberlain    schedule 20.12.2010

Подход читателя обычно подходит, но ваш запрос (или SP) уже должен выбирать данные в том порядке, в котором вы хотите их получить.

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

person Lucero    schedule 20.12.2010

Я вижу два пути:

1) Получите все строки в одном операторе sql, а затем получите доступ к нужной строке в памяти.

Или («всего» слишком много или вам нужны свежие данные)

2) Получите только ту строку, которая вам нужна, и снова для следующей строки.

person Hans Kesting    schedule 20.12.2010

Чего именно вы пытаетесь достичь? Извлекать случайные строки из DS или у вас есть определенные критерии для выбора, какие строки вы хотите вернуть? И если да, то не могли бы вы их заказать перед загрузкой в ​​ридер?

person HSBallina    schedule 20.12.2010