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

posted on 2008-11-14 14:34  zamesking  阅读(852)  评论(0)    收藏  举报

导航