Каков наилучший подход для привязки данных к элементу управления ReportViewer? (DataAdapter против DataReader) - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть 2 подхода для привязки данных к элементу управления ReportViewer.Какой из них лучше?Не могли бы вы дать мне совет?

Подход 1: Использование SqlDataAdapter

Dim dt As DataTable = New DataTable
Dim conn As SqlConnection = New SqlConnection(connString)
Try
    conn.Open()
    Dim cmd As New SqlCommand(sql, conn)
    Dim adapter As New SqlDataAdapter(cmd)
    adapter.Fill(dt)
Catch ex As Exception
Finally
    conn.Close()
End Try

Dim ds As New ReportDataSource(dataSourceName, dt)
rViewer.LocalReport.DataSources.Clear()
rViewer.LocalReport.DataSources.Add(ds)
rViewer.LocalReport.Refresh()

Подход 2: Использование SqlDataReader

Dim dt As New DataTable()
Dim conn As SqlConnection = New SqlConnection(connString)
Try
    conn.Open()
    Dim cmd As New SqlCommand(sql, conn)
    Dim reader As SqlDataReader = cmd.ExecuteReader()

    dt.Load(reader)
    reader.Close()
Catch ex As Exception
Finally
    conn.Close()
End Try

Dim ds As New ReportDataSource(dataSourceName, dt)
rViewer.LocalReport.DataSources.Clear()
rViewer.LocalReport.DataSources.Add(ds)
rViewer.LocalReport.Refresh()

1 Ответ

1 голос
/ 06 апреля 2011

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

...