我有两种方法将数据绑定到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()
答案 0 :(得分:1)
如果我必须在两者之间做出选择,我会选择第一个,因为数据集是使用datareader在内部填充的。
您的第二个示例转换数据集中的datareader
第一个选项应该稍快一些。
另一种选择是使用对象(实体)作为数据源
您可以找到更多信息here。