加载数据集表时效率更高?

时间:2016-07-05 18:05:26

标签: sql .net vb.net stored-procedures dataset

一次加载所有数据集表(在表单初始加载期间)是否更有效?或者在需要时多次访问数据库更好?

例如,我有一个网格控件,上面是两个复选框,表示加载ALL和Load Current。我应该在初始加载期间将这两个SQL select语句加载到一个数据集中。然后将网格控件的绑定更改为在CheckedChange事件期间在初始表单加载时加载的不同表?

OR

每次在CheckedChange事件期间命中数据库并加载不同的表会更好吗?

谢谢,

1 个答案:

答案 0 :(得分:-1)

如果要检索大量只读数据,请尝试这样的例程:

Function GetDataTable(ByVal SQL As String, Optional ByVal ConnectString As String = "", Optional ByVal SingleRow As Boolean = False) As DataTable ' returns read only Datatable
    Try
        If ConnectString.Length = 0 Then ConnectString = g.OISConnectString()
        Using con As New System.Data.SqlClient.SqlConnection(ConnectString)
            Dim rdr As Data.SqlClient.SqlDataReader
            con.Open()
            Dim cmd As New SqlCommand(SQL, con)
            If SingleRow Then
                rdr = cmd.ExecuteReader(CommandBehavior.SingleRow Or CommandBehavior.CloseConnection)
            Else
                rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
            End If
            Dim dt As New DataTable
            dt.Load(rdr)
            rdr.Close()
            Return dt
        End Using
    Catch ex As Exception
        MsgBox(ex.Message, , "GetDataTable")
        Return Nothing
    End Try
End Function

它使用数据表没有经过数据集开销。

如果"当前"是您已检索的行的子集,从Datatable创建Dataview,然后使用该视图作为网格的数据源。更改数据视图过滤器以查看"当前"记录。