Begin

ASP.net OleDbConnection

ASP.NET : ADO.net objecten OleDbConnection ,OleDbCommand, OleDbDataReader.

Een beetje naar anolgie wat wij in MS Access gewoon zijn beschikt ASP.net over een gans scala van Server Controls die via Visual Web Developer eenvoudig in een .aspx pagina kunnen ingevoegd worden. Het grote verschil met HTML controls is dat de Server controls op Server-niveau verwerkt worden, vandaar de noodzaak van het runat="server" attribuut.
Wanneer men een nieuwe .aspx pagina toevoegt heeft men de optie om een afzonderlijke VB.net-code pagina aan te maken. Men kan dit een beetje vergelijken met de 'Code behind Form' van een Access Formulier. Ik geef de voorkeur om de code te voorzien in een afzonderlijke VB.net pagina. Wanneer de aspx-pagina de naam heeft "MijnPagina.aspx" noemt Visual Web Developer de code pagina "MijnPagina.aspx.vb".

Natuurlijk moeten de Server Controls van data uit de database voorzien worden. Daartoe bespreken wij hier een eerste drie ADO.net objecten die ondermeer specifiek voor MS Access gelden:

  1. OleDbConnection : bevat de vereiste informatie over Provider en MS Acces-database om een verbinding met de database tot stand te brengen.
    Herinner dat er in het Web.config bestand via een naam naar de ConnectionString kan verwezen worden. Via de eigenschap ConnectionString van het object ConfigurationManager kan die opgevraagd worden :
    Public strCon As String = ConfigurationManager.ConnectionStrings("boeken").ToString
    Tenslotte kan men een OleDBConnection declareren :
    Public con As New System.Data.OleDb.OleDbConnection(strCon)
  2. OleDbCommand Dit object bevat een commando, een SQL-Clausule, en een Connection object.
    Bij voorbeeld voor het opvragen van data uit tblAuteur :
    Dim strSQL As String = "SELECT IDAuteur, ANaam & "" "" & AVoornaam AS Naam FROM tblAuteur ORDER BY ANaam;"
    con.Open()
    Dim cmd As New System.Data.OleDb.OleDbCommand(strSQL, con)
  3. OleDbDataReaderMet een DataReader kan men data inlezen (alleen lezen, niet schrijven. Door dat er enkel data kan gelezen worden is een DataReader vrij snel.
    Men vrijgt een DataReader via de ExecuteReader methode van het command object. Na het gebruik van de OleDbDataReader moet de connectie explicit gesloten worden.

In dit voorbeeld gaan wij een 'ListBox' vullen met de IDAuteur en de Naam.

De .aspx - pagina

		<asp:ListBox ID="lboAuteur" runat="server" Height="250px"></asp:ListBox>

De .aspx. - pagina

Partial Class Boek_Auteur_1
    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, ANaam & "" "" & AVoornaam AS Naam FROM tblAuteur ORDER BY ANaam;"
        con.Open()
        Dim cmd As New System.Data.OleDb.OleDbCommand(strSQL, con)
        Me.lboAuteur.DataSource = cmd.ExecuteReader
        Me.lboAuteur.DataValueField = "IDAuteur"
        Me.lboAuteur.DataTextField = "Naam"
        Me.lboAuteur.DataBind()
        con.Close()
    End Sub
End Class

Door het toepassen van de ExecuteReader methode van het OLeDBCommand object wordt impliciet een OLeDbDataReader het kan echter ook expliciet :

Partial Class Boek_Auteur_2
    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, ANaam  & "" "" &  AVoornaam AS Naam FROM tblAuteur ORDER BY ANaam;"
        con.Open()
        Dim cmd As New System.Data.OleDb.OleDbCommand(strSQL, con)
        Dim AuteurReader As OleDbDataReader = cmd.ExecuteReader
        Me.lboAuteur.DataSource = AuteurReader
        Me.lboAuteur.DataValueField = "IDAuteur"
        Me.lboAuteur.DataTextField = "Naam"
        Me.lboAuteur.DataBind()
        con.Close()
    End Sub
End Class

Met een OLeDbDataReader kan men tevens in een lus rij per rij inlezen en bijvoorbeeld een HTML tabel aanmaken alsook het aantal records tellen.

De .aspx. - pagina waar HTML-tabel gegenereerd wordt.

<div id="HTMLTabel" runat="server">

</div>
    <asp:Label ID="lblAantAuteur" runat="server" Text=""></asp:Label>

De .aspx.vb - van de pagina waar HTML-tabel gegenereerd wordt.

Partial Class Boek_Auteur_3
    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 IDAuteur,ANaam,AVoornaam FROM tblAuteur ORDER BY ANaam;"
        con.Open()
        Dim strHTML As String = "<table cellpadding='5px'><tr><td>ID</td><td>Naam</td><td>Voornaam</td></tr>"
        Dim intTel As Integer = 0
        Dim cmd As New System.Data.OleDb.OleDbCommand(strSQL, con)
        Dim AuteurReader As OleDbDataReader = cmd.ExecuteReader
        Do While AuteurReader.Read
            strHTML = strHTML & "<tr><td>" & AuteurReader("IDAuteur") & "</td><td>" & AuteurReader("ANaam") _
            & "</td><td>" & AuteurReader("AVoornaam") & "</td></tr>"
            intTel = intTel + 1
        Loop
        strHTML = strHTML & "</table>"
        Me.HTMLTabel.InnerHtml = strHTML
        Me.lblAantAuteur.Text = intTel.ToString & " Auteurs"
        con.Close()
    End Sub
End Class

ASP.net beschikt echter ook over krachtige Data Server Controls. De GridView is er één van. Met GridView kan men data in tabel vorm weergeven en kan men kolommen als hyperlink weergeven. Bovendien zijn de opmaak mogelijken via Visual Web Developer legio.
Via een Datareader is echter 'paging' in de GridView niet mogelijk. Dit kan wel als het object Dataset de data-bron is.

De .aspx. - pagina met een Gridview.

<asp:GridView ID="grvAuteur" runat="server"
        AutoGenerateColumns="False">
        <Columns>
            <asp:BoundField DataField="IDAuteur" HeaderText="ID" />
            <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 een Gridview.

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;"
        con.Open()
        Dim objCom As New OleDbCommand(strSQL, con)
        Me.grvAuteur.DataSource = objCom.ExecuteReader
        Me.grvAuteur.DataBind()
        con.Close()
    End Sub
End Class

Begin