Begin

ASP.net OleDataAdapter

ASP.NET : ADO.net objecten OleDataAdapter ,Dataset.

Bij de bespreking van het ADO.net object OleDBDatareader zagen wij dat er enkel data kan ingelezen worden en eens zover de connectie explicit moet gesloten worden. Omwille daarvan is 'paging' bij bijvoorbeeld de GridView data-control niet mogelijk. Met 'paging' kan de data in de Gridview over verschillende pagina's van bijvoorbeeld 10 records getoond worden. Dit is wel mogelijk met het ADO.net DataSet object.

  1. DataSet De filosofie achter het ADO.net Dataset object is dat men een connectie maakt met een database en een Dataset vult met een copie van bepaalde gegevens uit de database. Men spreekt van een data-tabel, kunnen er ook meerdere zijn, inclusief relaties. Eens de connectie gesloten kan men verder werken met de data, deze indien gewenst wijzigen terwijl de data in de database ongewijzigd blijft. De Dataset werkt als het ware in het plaatselijk geheugen van de webserver. Ieder record wordt in een Dataset vertegenwoordigd door een 'DataRow' object.
    Wanneer de wijzigingen moeten toegepast worden op de database moet er opnieuw een connectie gemaakt en kunnen de wijzigingen in één batch operatie uitgevoerd worden.
  2. OleDbDataAdapter Is in feite een brug tussen één Data-tabel in de Dataset en de database. Het bevat de commands voor het bevragen en bijwerken van de data in de database.
    • Met de Fill() methode wordt een data-tabel toegevoegd aan de Dataset.
    • Met de Update() methode worden de wijzigingen in de data-tabel doorgevoerd in de database en dit via de passende InsertCommand, UpdateCommand en DeleteCommand operatoren.

In het volgende voorbeeld wordt het DataSet object gebruikt als 'databron' voor een Gridview control. In de Gridview is 'paging' voorzien en is het veld IDAuteur van de tblAuteur een hyperlink die het mogelijk moet maken te navigeren naar een pagina met detail gegevens over de auteur en een overzicht van de werken ervan.

De .aspx. - pagina met de Gridview met paging en hyperlink. Let op : DataNavigateUrlFormatString="Auteur_5.aspx?IDAuteur={0}"
Dit betekent dat drukken op de hyperlink navigeert naar de pagina Auteur_5.aspx en dat men een querystring meegeeft waar IDAuteur de waarde heeft in de betreffende rij van de GridView grvAuteur.

<asp:GridView ID="grvAuteur" runat="server"
                AutoGenerateColumns="False" AllowPaging="True"
                EnableSortingAndPagingCallbacks="True">
                <Columns>
                    <asp:HyperLinkField DataNavigateUrlFields="IDAuteur"
                        DataNavigateUrlFormatString="Auteur_5.aspx?IDAuteur={0}"
                        DataTextField="IDAuteur" />
                    <asp:BoundField DataField="ANaam" HeaderText="Naam" />
                    <asp:BoundField DataField="AVoornaam" HeaderText="Voornaam" />
                    <asp:BoundField DataField="Nationaliteit" HeaderText="Nationaliteit" />
                    <asp:BoundField DataField="AGeslacht" HeaderText="Geslacht" />
                </Columns>
        </asp:GridView>
        

De .aspx.vb - pagina met de Gridview met paging en hyperlink.

Partial Class Boek_Auteur_4
            Inherits System.Web.UI.Page
            Public strCon As String = ConfigurationManager.ConnectionStrings("boeken").ToString
            Public con As New System.Data.OleDb.OleDbConnection(strCon)
        
            Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                Dim strSQL As String = "SELECT tblAuteur.IDAuteur, tblAuteur.ANaam, tblAuteur.AVoornaam, tblLuNat.Nationaliteit," _
                & "tblAuteur.AGeslacht FROM tblAuteur INNER JOIN tblLuNat ON tblAuteur.ANat = tblLuNat.IDANat ORDER BY tblAuteur.ANaam;"
                con.Open()
                Dim objCom As New OleDbCommand(strSQL, con)
                Dim objDAdap As New OleDbDataAdapter(objCom)
                Dim objDataset As New DataSet()
                objDAdap.Fill(objDataset, "dtAuteur")
                Me.grvAuteur.DataSource = objDataset.Tables("dtAuteur")
                Me.grvAuteur.DataBind()
                con.Close()
            End Sub
        End Class
        
        
Begin