一次加载所有数据集表(在表单初始加载期间)是否更有效?或者在需要时多次访问数据库更好?
例如,我有一个网格控件,上面是两个复选框,表示加载ALL和Load Current。我应该在初始加载期间将这两个SQL select语句加载到一个数据集中。然后将网格控件的绑定更改为在CheckedChange事件期间在初始表单加载时加载的不同表?
OR
每次在CheckedChange事件期间命中数据库并加载不同的表会更好吗?
谢谢,
答案 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,然后使用该视图作为网格的数据源。更改数据视图过滤器以查看"当前"记录。