Hop til teksten

IT FJERNUNDERVISNING
- IT kurser når Du har tid!

Grundlæggende ADO.NET

Nu har vi set, hvordan man med .NET kan binde data i en database til en stribe kontroller, der kan hjælpe med at vise og vedligeholde data. Det dækker rigtig mange behov, men der er altid et lille hjørne, som man bliver nødt til at håndkode. Og det er det vi nu skal kigge på.

Udvælg data

Jeg tror bare vi kaster os direkte ud i et eksempel, men for at det ikke skal virke for let laver vi en klasse, som vi kan bruge mange steder. Læs mere om klasser.
Start med at oprette en mappe til din klasse. Højreklik på dit projekt i Solution Explorer ude til højre og vælg "Add ASP.NET Folder" og tilføj en App_Code folder:

Dernæst kan du højreklikke på "App_Code" folderen og oprette en klasse:

 

using System.Data.SqlClient;
using System.Collections.Generic;

public class ADOKlasse
{
    public List<String> HentData()
    {
        SqlConnection conn;
        SqlCommand cmd;
        String cmdString = "Select * From tblProjekter";
        String conString = ConfigurationManager.ConnectionStrings["ASPNET35KursusConnectionString"].ToString();
        conn = new SqlConnection(conString);
        cmd = new SqlCommand(cmdString,conn);
        conn.Open();
        SqlDataReader minReader;
        List<String> returnData = new List<String>();
        minReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        while (minReader.Read())
        {
            returnData.Add(minReader["txtBeskrivelse"].ToString());
        }
        return returnData;
    }
}
Imports System.Data.SqlClient
Imports System.Collections.Generic
Imports System.Data

Public Class ADOKlasse
    Public Function HentData() As List(Of String)
        Dim conn As SqlConnection
        Dim cmd As SqlCommand
        Dim cmdString As String = "Select * From tblProjekter"
        Dim conString As String = ConfigurationManager.ConnectionStrings("ASPNET35KursusConnectionString").ToString()
        conn = New SqlConnection(conString)
        cmd = New SqlCommand(cmdString, conn)
        conn.Open()
        Dim minReader As SqlDataReader
        Dim returnData As List(Of String) = New List(Of String)
        minReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        While minReader.Read()
            returnData.Add(minReader("txtBeskrivelse").ToString())
        End While
        Return returnData
    End Function
End Class

 

Har du arbejdet med dataforbindelser i klassisk asp, er ovenstående nok ikke specielt svært at gennemskue. Der arbejdes med tre objekter - SqlConnection, SqlCommand og SqlDataReader. Den første bruges til at etablere forbindelse til databasen, den næste til at sende kommandoer til basen og endelig bruges SqlDataReader til udføre selve læsningen.

Bemærk at koden indeholder nogle Imports/Using, der forudsætning for at det kører som det skal.

Brug klassen

For at se om sådan en klasse virker efter hensigten skal vi etablere en aspx side. Hvis du laver én med en label og en knap kan nedenstående kode bruges:

using System.Collections.Generic;

public partial class ADO1 : System.Web.UI.Page
{
    protected void cmdHent_Click(object sender, EventArgs e)
    {
        ADOKlasse ProjektKlasse = new ADOKlasse();
        List<String> Projekter = ProjektKlasse.HentData(); 
        for (int i=0;i<=Projekter.Count-1;i++)
            lblResultat.Text += Projekter[i] + "<br/>";
    }
}
Protected Sub cmdHent_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdHent.Click
    Dim ProjektKlasse As ADOKlasse = New ADOKlasse()
    Dim Projekter As List(Of String) = ProjektKlasse.HentData()
    Dim i As Integer
    For i = 0 To Projekter.Count - 1
        lblResultat.Text += Projekter(i) + "<br/>"
Next End Sub

Når du har betalt for kurset får du adgang til øvelser til hver lektion. Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.