Действительно ли datareader более быстр, чем набор данных при заполнении таблицы данных?

Ваша программа должна быть такой. Каждый раз, когда вы устанавливаете данные в fuOb, они отменяют предыдущие данные.

FultonObj fuOb1 = new FultonObj(); 
fuOb1.setFileNo(file1); 
fuOb1.setParcelId(parcelId1); 
fuOb1.setSitus(situs1); 
list.add(fuOb1); 

FultonObj fuOb2 = new FultonObj(); 
fuOb2.setFileNo(file2); 
fuOb2.setParcelId(parcelId2); 
fuOb2.setSitus(situs2); 
list.add(fuOb2);
9
задан Joel Coehoorn 2 December 2008 в 17:00
поделиться

7 ответов

DataAdapter использует DataReader под капотом, таким образом, Ваш опыт, вероятно, был бы тем же.

Преимущество DataAdapter - Вы, отключает много кода, для которого было бы нужно обслуживание.

Эти дебаты являются чем-то вроде религиозной проблемы, так определенно озираются и решают что работы лучше всего для Вашей ситуации:

9
ответ дан 4 December 2019 в 06:35
поделиться

Принятие Вас на самом деле хочет все данные, возвращающиеся из базы данных, время, потраченное в базе данных и в сети почти наверняка, затмит время, потраченное незавершенный для заполнения структур данных в памяти.

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

11
ответ дан 4 December 2019 в 06:35
поделиться

Я не могу говорить с заполнением таблицы данных по сути, но использование datareader является самым эффективным методом чтения.

3
ответ дан 4 December 2019 в 06:35
поделиться

datareader быстрее. И если Вы используете 2.0 + Вы, probablt не должны даже использовать таблицу данных. Можно использовать универсальный список объекта.

2
ответ дан 4 December 2019 в 06:35
поделиться

Ваша опция № 1 была бы медленнее. Однако существует лучший способ преобразовать datareader в таблицу данных, чем добавление пользовательских строк вручную:

DataTable dt = new DataTable();

using (SqlConnection conn = GetOpenSqlConnection())
using (SqlCommand cmd = new SqlCommand("SQL Query here", conn)
using (IDataReader rdr = cmd.ExecuteReader())
{
    dt.Load(rdr);
}

Я не могу прокомментировать различие между этим и использованием .Fill().

8
ответ дан 4 December 2019 в 06:35
поделиться

Хорошо иметь DataReader, когда Вы должны, например, показать прогресс загружающихся данных. В DataSet Вы не можете сделать чего-то в середине загружающихся данных.

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

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

Больше по этой теме в MSDN Magazine

1
ответ дан 4 December 2019 в 06:35
поделиться

Как со многими вопросами как это ответ: зависит.

Если Вы не знаете структуру своих данных впереди и создаете TableAdapters на лету, то динамический DataTable был бы более эффективным. Существует большая генерация кода, вовлеченная в создание TableAdapter.

Однако, если Вы знаете структуру своих данных впереди затем, вопрос становится, В каком количестве функциональности я нуждаюсь?

При необходимости в полной реализации CRUD затем существует некоторая эффективность, полученная при помощи TableAdapter вместо того, чтобы писать все это код CRUD сами. Кроме того, реализация TableAdapter в порядке (не большая). При необходимости в чем-то более эффективном затем, можно быть более обеспеченным использованием nHibernate или некоторым другим ORM.

Если Вам не нужна полная реализация CRUD (т.е. это - решение только для чтения), и знайте свою структуру данных впереди, то необходимо будет протестировать эффективность TableAdapter реализация только для чтения против динамично сгенерированного DataTable. Если я был держащим пари человеком, я поместил свои деньги на реализации TableAdapter, так как Вы связываете данные однажды и читаете их многократно.

1
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: