ASP.net OleDbCommand
ASP.NET : ADO.net object OleDbCommand, Methoden.
De methode ExecuteReader en die een OleDbDataReader object geeft werd besproken onder: 'ASP.NET : C ADO.net objecten OleDbConnection ,OleDbCommand, OleDbDataReader.'. Wanneer men enkel data moet opvragen is deze methode zeer snel en aangewezen. Echter 'paging' (gegevens over verschilldende bladzijden weergeven) sorteren en bewerken zijn met een OleDDDataReader niet mogelijk.
Nog 2 belangrijke methodes van het OleDbCommand object zijn de ExecuteScalar en de ExecuteNonQuery methodes.
Dim strSQLTelwerk As String = "SELECT Count(IDWerk) AS Totaal FROM tblWerk WHERE IDAuteur = " & intIDAuteur & ";" Dim comTelWerk As New OleDbCommand(strSQLTelwerk, con) Dim intAantal werken as integer = comTelWerk.ExecuteScalar
Dim strSQLtoevWerk As String = "INSERT INTO tblWerk (IDAuteur,WTitel,WGelezen,WAppr,WGenre,WUitgever) VALUES " _
& "(" & intIDAuteur & ",'" & strWTitel & "'," & blnWGelezen & "," & intWAppr & "," & intWGenre & "," & intWUitgever & ");"
Dim comtoevwerk As New OleDbCommand(strSQLtoevWerk, con)
comtoevwerk.ExecuteNonQuery()
Dim strSQLbewerkWerk As String = "UPDATE tblWerk SET WTitel = '" & strWTitel & "', WGelezen = " & blnWGelezen & "," _ & "WAppr = " & intWAppr & ", WGenre = " & intWGenre & ", WUitgever = " & intWUitgever & " WHERE IDWerk = " & intIDWerk & ";" Dim combewerkWerk As New OleDbCommand(strSQLbewerkWerk, con) combewerkWerk.ExecuteNonQuery()
Dim strSQLverwijdWerk As String = "DELETE * FROM tblWerk WHERE IDWerk = " & intIDWerk Dim comverwijdWerk As New OleDbCommand(strSQLverwijdWerk, con) comverwijdWerk.ExecuteNonQuery()
Vanaf de pagina Auteur_4.aspx wordt via een hyperlink een auteur geselecteerd en genavigeert naar pagina Auteur_5.apsx. Zie ASP.NET : C ADO.net objecten OleDbConnection ,OleDbCommand, OleDbDataReader. De pagina Auteur_5.aspx :
De .aspx pagina met de detail gegevens van de auteur met zijn werken.
<asp:HiddenField ID="hdfIDAteur" runat="server" />
<table>
<tr><td>ID van de Auteur</td><td><asp:TextBox ID="txtIDAuteur" runat="server"></asp:TextBox></td></tr>
<tr><td>Naam auteur</td><td><asp:TextBox ID="txtANaam" runat="server" Width="250px"></asp:TextBox></td></tr>
<tr><td>Voornaam auteur</td><td><asp:TextBox ID="txtAVoornaam" runat="server" Width="250px"></asp:TextBox></td></tr>
<tr><td>Info over auteur</td><td><asp:TextBox ID="txtAInfo" runat="server" Width="250px"
TextMode="MultiLine"></asp:TextBox></td></tr>
<tr><td>Nationaliteit auteur</td><td><asp:DropDownList ID="ddlANat" runat="server" Width="175px">
</asp:DropDownList></td></tr>
<tr><td>Geslacht auteur</td><td><asp:DropDownList ID="ddlAGeslacht" runat="server" Width="175px">
<asp:ListItem Value="V" Text="Vrouwelijk"></asp:ListItem>
<asp:ListItem Value="M" Text="Mannelijk"></asp:ListItem>
</asp:DropDownList>
</td></tr>
<tr><td>
<asp:ListBox ID="lboWerkTitel" runat="server" Height="120px"></asp:ListBox>
<br />
<asp:Label ID="lblAantWerk" runat="server" Text=""></asp:Label>
</td>
<td>
<table style="margin-left:35px;" cellpadding="15px" cellspacing="15px">
<tr>
<td>
<asp:Button ID="btnWerkToev" runat="server" Text="Werk toevoegen" /></td>
</tr>
<tr>
<td>
<asp:Button ID="btnWerkOpvr" runat="server" Text="Werk Opvragen" /></td>
</tr>
</table>
</td></tr>
</table>
<table ID="tblWerk" runat="server">
<tr><td>ID van het werk </td><td>
<asp:TextBox ID="txtIDWerk" runat="server"></asp:TextBox></td></tr>
<tr><td>Titel werk</td><td>
<asp:TextBox ID="txtWTitel" runat="server" Width="250px"></asp:TextBox></td></tr>
<tr><td>Gelezen ? </td><td>
<asp:CheckBox ID="chbWGelezen" runat="server" /></td></tr>
<tr><td>Appreciatie</td><td>
<asp:DropDownList ID="ddlWAppr" runat="server" Width="175px">
</asp:DropDownList>
</td></tr>
<tr><td>Genre Werk</td><td>
<asp:DropDownList ID="ddlWGenre" runat="server" Width="175px">
</asp:DropDownList>
</td></tr>
<tr><td>Uitgever </td><td>
<asp:DropDownList ID="ddlWUitgever" runat="server" Width="175px">
</asp:DropDownList>
</td></tr>
<tr><td colspan="2">
<asp:RadioButtonList ID="rblWerk" runat="server" RepeatDirection="Horizontal" AutoPostBack="true">
<asp:ListItem Value="1">Werk bewerken</asp:ListItem>
<asp:ListItem Value="2">Werk verwijderen</asp:ListItem>
</asp:RadioButtonList>
</td></tr>
<tr><td>
<asp:Button ID="btnUitvoeren" runat="server" Text="Uitvoeren" /></td>
<td><asp:Label ID="lblResultaat" runat="server" Text="Resultaat"></asp:Label>
</td></tr>
</table>
De .aspx.vb pagina met de detail gegevens van de auteur met zijn werken.
Partial Class Boek_Auteur_5
Inherits System.Web.UI.Page
Public strCon As String = ConfigurationManager.ConnectionStrings("boeken").ToString
Public con As New System.Data.OleDb.OleDbConnection(strCon)
Protected Sub initTabelWerk(Optional ByVal intIDWerk As Integer = 0)
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim comAppr As New OleDbCommand("SELECT * FROM tblLuAppr ORDER BY Appreciatie;", con)
Dim comGenre As New OleDbCommand("SELECT * FROM tblLuGenre ORDER BY Genre;", con)
Dim comUitgever As New OleDbCommand("SELECT * FROM tblLuUitgever ORDER BY Uitgever;", con)
Me.ddlWAppr.DataSource = comAppr.ExecuteReader
Me.ddlWAppr.DataValueField = "IDWAppr"
Me.ddlWAppr.DataTextField = "Appreciatie"
Me.ddlWAppr.DataBind()
Me.ddlWGenre.DataSource = comGenre.ExecuteReader
Me.ddlWGenre.DataValueField = "IDWGenre"
Me.ddlWGenre.DataTextField = "Genre"
Me.ddlWGenre.DataBind()
Me.ddlWUitgever.DataSource = comUitgever.ExecuteReader
Me.ddlWUitgever.DataValueField = "IDWUitgever"
Me.ddlWUitgever.DataTextField = "Uitgever"
Me.ddlWUitgever.DataBind()
If intIDWerk <> 0 Then
Dim strSQLWerk As String = "SELECT * FROM tblWerk WHERE IDWerk = " & intIDWerk
Dim comWerk As New OleDbCommand(strSQLWerk, con)
Dim readWerk As OleDbDataReader = comWerk.ExecuteReader
readWerk.Read()
Me.txtIDWerk.Text = readWerk("IDWerk")
Me.txtWTitel.Text = readWerk("WTitel")
Me.chbWGelezen.Checked = CBool(readWerk("WGelezen"))
Me.ddlWAppr.SelectedValue = CInt(readWerk("WAppr"))
Me.ddlWGenre.SelectedValue = CInt(readWerk("WGenre"))
Me.ddlWUitgever.SelectedValue = CInt(readWerk("WUitgever"))
End If
con.Close()
End Sub
Protected Function telWerken(ByVal intIDAuteur As Integer) As String
Dim strSQLTelwerk As String = "SELECT Count(IDWerk) AS Totaal FROM tblWerk WHERE IDAuteur = " & intIDAuteur & ";"
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim comTelWerk As New OleDbCommand(strSQLTelwerk, con)
Return "Werken: " & comTelWerk.ExecuteScalar.ToString
con.Close()
End Function
Protected Function toevWerk(ByVal intIDAuteur As Integer) As String
Dim strWTitel As String = Me.txtWTitel.Text
Dim blnWGelezen As Boolean = CBool(Me.chbWGelezen.Checked)
Dim intWAppr As Integer = CInt(Me.ddlWAppr.SelectedValue)
Dim intWGenre As Integer = CInt(Me.ddlWGenre.SelectedValue)
Dim intWUitgever As Integer = CInt(Me.ddlWUitgever.SelectedValue)
Dim strSQLtoevWerk As String = "INSERT INTO tblWerk (IDAuteur,WTitel,WGelezen,WAppr,WGenre,WUitgever) VALUES " _
& "(" & intIDAuteur & ",'" & strWTitel & "'," & blnWGelezen & "," & intWAppr & "," & intWGenre & "," & intWUitgever & ");"
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim comtoevwerk As New OleDbCommand(strSQLtoevWerk, con)
comtoevwerk.ExecuteNonQuery()
con.Close()
Return "Werk toegevoegd."
End Function
Protected Function bewerkWerk(ByVal intIDWerk As Integer) As String
Dim strWTitel As String = Me.txtWTitel.Text
Dim blnWGelezen As Boolean = CBool(Me.chbWGelezen.Checked)
Dim intWAppr As Integer = CInt(Me.ddlWAppr.SelectedValue)
Dim intWGenre As Integer = CInt(Me.ddlWGenre.SelectedValue)
Dim intWUitgever As Integer = CInt(Me.ddlWUitgever.SelectedValue)
Dim strSQLbewerkWerk As String = "UPDATE tblWerk SET WTitel = '" & strWTitel & "', WGelezen = " & blnWGelezen & "," _
& "WAppr = " & intWAppr & ", WGenre = " & intWGenre & ", WUitgever = " & intWUitgever & " WHERE IDWerk = " & intIDWerk & ";"
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim combewerkWerk As New OleDbCommand(strSQLbewerkWerk, con)
combewerkWerk.ExecuteNonQuery()
con.Close()
Return "Werk bijgewerkt."
End Function
Protected Function verwijdWerk(ByVal intIDWerk As Integer) As String
Dim strSQLverwijdWerk As String = "DELETE * FROM tblWerk WHERE IDWerk = " & intIDWerk
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim comverwijdWerk As New OleDbCommand(strSQLverwijdWerk, con)
comverwijdWerk.ExecuteNonQuery()
con.Close()
Return "Werk verwijderd."
End Function
Protected Sub initLijstWerken(ByVal intIDAuteur As Integer)
Dim strSQLWerk As String = "SELECT IDWerk,WTitel FROM tblWerk WHERE IDAuteur = " & intIDAuteur & " ORDER BY WTitel;"
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim comWerk As New OleDbCommand(strSQLWerk, con)
Dim readWerk As OleDbDataReader = comWerk.ExecuteReader
Me.lboWerkTitel.DataSource = readWerk
Me.lboWerkTitel.DataValueField = "IDWerk"
Me.lboWerkTitel.DataTextField = "WTitel"
Me.lboWerkTitel.DataBind()
con.Close()
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim intIDAuteur As Integer = CInt(Request.QueryString("IDAuteur"))
Me.hdfIDAteur.Value = intIDAuteur
Dim strSQLAuteur As String = "SELECT * FROM tblAuteur WHERE IDAuteur = " & intIDAuteur
Me.tblWerk.Visible = False
Try
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim comNation As New OleDbCommand("Select * FROM tblLuNat;", con)
Dim readNation As OleDbDataReader = comNation.ExecuteReader
Me.ddlANat.DataSource = readNation
Me.ddlANat.DataValueField = "IDANat"
Me.ddlANat.DataTextField = "Nationaliteit"
Me.ddlANat.DataBind()
Dim comAuteur As New OleDbCommand(strSQLAuteur, con)
Dim readAuteur As OleDbDataReader = comAuteur.ExecuteReader
readAuteur.Read()
Me.txtIDAuteur.Text = intIDAuteur.ToString
Me.txtANaam.Text = readAuteur("ANaam")
Me.txtAVoornaam.Text = readAuteur("AVoornaam")
Me.txtAInfo.Text = readAuteur("AInfo") & ""
Me.ddlANat.SelectedValue = CInt(readAuteur("ANat"))
Me.ddlAGeslacht.SelectedValue = readAuteur("AGeslacht")
con.Close()
Call initLijstWerken(intIDAuteur)
Me.lblAantWerk.Text = telWerken(intIDAuteur)
Catch ex As OleDb.OleDbException
Dim strBoodschap As String = ex.Message '& ex.InnerException.ToString
End Try
End If
End Sub
Protected Sub btnWerkOpvr_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnWerkOpvr.Click
'If CInt(Me.lboWerkTitel.SelectedValue) > 0 Then
If Not Me.lboWerkTitel.SelectedValue = Nothing Then
Me.tblWerk.Visible = True
Me.rblWerk.Visible = True
Dim intIDWerk As Integer = CInt(Me.lboWerkTitel.SelectedValue)
Call initTabelWerk(intIDWerk)
Me.lblResultaat.Text = ""
End If
End Sub
Protected Sub btnWerkToev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnWerkToev.Click
Me.tblWerk.Visible = True
Me.rblWerk.Visible = False
Me.lblResultaat.Text = ""
Call initTabelWerk()
End Sub
Protected Sub btnUitvoeren_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUitvoeren.Click
Dim intIDAuteur As Integer = Me.hdfIDAteur.Value
If Me.rblWerk.Visible = False Then
Me.lblResultaat.Text = toevWerk(intIDAuteur)
Call initLijstWerken(intIDAuteur)
Me.lblAantWerk.Text = telWerken(intIDAuteur)
Else
Dim intIDWerk As Integer = CInt(Me.txtIDWerk.Text)
If CByte(Me.rblWerk.SelectedValue) = 1 Then
Me.lblResultaat.Text = bewerkWerk(intIDWerk)
Call initLijstWerken(intIDAuteur)
Me.lblAantWerk.Text = telWerken(intIDAuteur)
End If
If CByte(Me.rblWerk.SelectedValue) = 2 Then
Me.lblResultaat.Text = verwijdWerk(intIDWerk)
Call initLijstWerken(intIDAuteur)
Me.lblAantWerk.Text = telWerken(intIDAuteur)
End If
End If
Me.lblAantWerk.Text = telWerken(intIDAuteur)
End Sub
Protected Sub rblWerk_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rblWerk.SelectedIndexChanged
Me.lblResultaat.Text = ""
End Sub
End Class