ADO.NET VB.NET 实现每次读取200条数据
当我们的数据库的记录太多时,如果一次性加载所有的记录对程序的性能有所影响。今天我通过VB.NET 实现每次都是根据需要向前或者向后读取200条记录。
程序说明:
改程序有 2个导航button,一个是“前进”,一个是“后退”。就跟bindingNavigator的功能类似。我使用一个dataTable来存储200条的记录。当数据访问到200条时,单击“前进”,程序自动查询数据库取出第201条到第400条的数据。同样,后退也是如此。
程序对数据库有个要求,需要有一列递增有序的ID列,这样使得改程序有些局限性。
以下是为tableAdapter添加的查询:
SELECT TOP(200) customerID,name, age, male,orderID
From Customer
Where (customerID> @ID)
代码如下:
Public Class Form1
Dim bs As BindingSource = New BindingSource()
Dim t As MyDBDataSet1.CustomerDataTable
Dim firstCustomerID As Integer
Dim lastCustomerID As Integer
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
t = Me.CustomerTableAdapter.GetDataByCustomerID(0)
bs.DataSource = t
Me.TextBox2.DataBindings.Add("Text", bs, "customerID")
bs.MoveLast()
lastCustomerID = bs.Current("customerID")
bs.MoveFirst()
firstCustomerID = bs.Current("customerID")

End Sub
Private Sub JobBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Validate()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'MyDBDataSet1.Customer' table. You can move, or remove it, as needed.
Me.CustomerTableAdapter.Fill(Me.MyDBDataSet1.Customer)
'TODO: This line of code loads data into the 'MyDBDataSet.Job' table. You can move, or remove it, as needed.
End Sub

Private Sub CustomerBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CustomerBindingNavigatorSaveItem.Click
Me.Validate()
Me.CustomerBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.MyDBDataSet1)
End Sub
Private Sub btnMovePre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovePre.Click
If bs.Current("customerID") = firstCustomerID Then
If firstCustomerID - 200 >= 0 Then
t = Me.CustomerTableAdapter.GetDataByCustomerID(firstCustomerID - 201)
bs.DataSource = t
bs.MoveFirst()
firstCustomerID = bs.Current("customerID")
bs.MoveLast()
lastCustomerID = bs.Current("customerID")
End If
End If
bs.MovePrevious()
End Sub
Private Sub btnMoveNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoveNext.Click
If bs.Current("customerID") = lastCustomerID Then
t = Me.CustomerTableAdapter.GetDataByCustomerID(lastCustomerID)
bs.DataSource = t
bs.MoveLast()
lastCustomerID = bs.Current("customerID")
bs.MoveFirst()
firstCustomerID = bs.Current("customerID")
End If
bs.MoveNext()
System.Diagnostics.Debug.WriteLine(t.Rows.Count.ToString())
End Sub
End Class

浙公网安备 33010602011771号