как создавать приложения Windows в VB.Net или ASP.Net - PullRequest
0 голосов
/ 11 мая 2009

какой метод эффективнее использовать: DataAdapter и DataSet или DataReader при импорте данных из определенной таблицы базы данных ???

Ответы [ 6 ]

2 голосов
/ 11 мая 2009

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

1 голос
/ 11 мая 2009

Здесь важен вариант использования. Как вы собираетесь использовать данные после их маршалинга в ваше приложение?

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

DataAdapter предоставляет больше возможностей в обмен на больший объем памяти и, в частности, будет включать в себя издержки DataTable. Это в обмен на более удобный API.

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

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

1 голос
/ 11 мая 2009

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

Адаптер данных и набор данных, фактически используют DataReader для того, чтобы вывести данные и сохранить результат в памяти, заполнение таблицы занимает больше времени, но доступ и обновление после этого происходит намного быстрее, пока вы не сохраните данные обратно в БД .

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

1 голос
/ 11 мая 2009

Под капотом DataAdapter использует DataReader для фактического запроса данных и заполнения набора данных / набора данных. В конце концов, на самом деле не имеет значения, какой из них вы используете, но я бы посоветовал DataAdapter, так как он проще в кодировании и менее подвержен ошибкам.

0 голосов
/ 11 мая 2009

Поскольку звучит так, будто вы ищете эффективность программы. Я бы склонялся к классу бизнес-объектов, используя считыватель данных в качестве метода доступа. Это даст вам возможность создавать поддерживаемый код и скорость.

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

как то так:

public class Table1
{
    public int Col1 { get; set; }
    public String Col2 { get; set; }

    public List<Table1> GetTable1()
    {
        List<Table1> tableContents = new List<Table1>();
        SqlCommand cmd = new SqlCommand("SELECT * FROM Table1");
        SqlDataReader rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            tableContents.Add(new Table1
            {
                Col1 = (int)rdr["Col1"],
                Col2 = (string)rdr["Col2"]
            });
        }

        return tableContents;
    }
}

Есть много способов сделать это, надеюсь, это поможет

0 голосов
/ 11 мая 2009

DataReader более «эффективен», чем DataAdapter, но имеет ограничения. Это, вероятно, лучше всего подходит для вашей проблемы, но без подробностей трудно сказать.

И, как говорит Джон, получить рабочее решение может быть вашим первым приоритетом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...