Получение всех строк из sqlce за одну выборку - PullRequest
1 голос
/ 29 августа 2011

У меня есть запрос к базе данных SQLCE, такой как

     select mobileNumber from customers where balance > 10000

До сих пор я перебирал SqlCeResultSet, как

     while (resultSet.Read())
     {
         mobileNumberList.Add(resultSet.GetValue(0));
     } 

Поэтому я хочу получить список мобильных номеровв одной выборке может быть как список.Как я могу это сделать?Потому что получение в одной выборке будет быстрее, верно?

ОБНОВЛЕНИЕ
Мало что я прочитал после прочтения ответов:
SqlDataReader vs SqlDataAdapter

Ответы [ 3 ]

1 голос
/ 29 августа 2011

в настоящее время вы используете DataReader, который предназначен только для чтения, «только курсор», прокручивает набор результатов и работает только при подключении к источнику данных.

Если вы измените свой ExecuteReader с помощью адаптера данных и набора данных Fill, вы получите объект DataSet / DataTable, который будет содержать все результаты и все еще может работать отключенным, после того как вы закроете соединение.

То, что вы хотите использовать, зависит от вашего реального варианта использования и потребностей, как правило, DataReader-ы быстрее, чем наборы данных, поэтому вы, возможно, уже используете самый быстрый доступный подход.

0 голосов
/ 17 мая 2012

Я не вижу, чтобы набор данных заполнялся здесь.Разве это не должно быть ds.Fill(adp) бит apd.Fill(ds)?Разве это не заполняет SqlCeDataAdapter, используя пустое DataSet, которое никогда не заполнялось, или я полностью запутался?

0 голосов
/ 29 августа 2011

Вы можете использовать SqlCeDataAdapter для заполнения DataSet за один раз всеми записями, возвращенными запросом.

например:

SqlCeDataAdapter adp = new SqlCeDataAdapter("select mobileNumber from customers where balance > 10000");
DataSet ds = new DataSet();
adp.Fill(ds);
...