ASP.NET 3.5 / Data med ADO.NET / Dataset og datatable
|
ASP.NET 3.5 som firmakursus?
Ja, jeg holder ikke kun fjernundervisningskurser
- jeg kan også komme ud i din virksomhed og undervise med
udgangspunkt i jeres data og udfordringer.
|
|
Dataset og DataTable
De fleste programører vil nok hurtigt kunne blive enige om at DataSet klassen er den mest brugte del af ADO.NET. DataSet klassen giver mulighed for at håndtere data uden at have adgang til den bagvedliggende database. Denne mulighed har der været i ASP.NET siden version 1.0 og i 3.5 har DataSet de samme muligheder plus nogle nye.
Et objekt dannet af DataSet klassen virker som en beholder for andre objekter, der dannet ud fra DataTable klassen. DataTable objektet repræsenterer en logisk data tabel i hukommelsen. Det indeholder rækker, kolonner, primær nøgler, relationer med andre DataTable objekter. Man kan derfor have et DataSet objekt bygget op af to tabeller f.eks. projekter og aktiviteter som i vores eksempeldatabase og ville kunne bruge det objekt præcis som man ville kunne bruge en "rigtig" database.
De fleste eksempler på database baseret programmering - uden direkte forbindelse til databasen - er faktisk baseret på en eller flere DataTable objekter inden i et DataSet objekt. Tidligere versioner af ADO.NET tillod ikke arbejde direkte med DataTable objektet f.eks. i forbindelse med læsning og skrivning af data til XML. Det betød at alle operationer skulle gennem DataSet objektet. I version 3.5 (og 2.0) af .NET framework'et er denne begrænsning fjernet og man kan arbejde direkte på DataTable objektet. Det anbefales derfor at anvende DataTable klassen frem for DataSet med mindre der er behov for håndtering af flere tabeller med relationer. Nedenfor et eksempel på etablering af en DataTable udfra en DataReader:
using System.Data.SqlClient;
protected void Page_Load(object sender, EventArgs e)
{
DataTable minDataTabel;
SqlDataReader minReader;
SqlConnection minForbindelse = new SqlConnection();
minForbindelse.ConnectionString =
ConfigurationManager.ConnectionStrings["ASPNET35KursusConnectionString"].ToString();
SqlCommand minKommando = new SqlCommand();
minKommando.CommandText = "Select * from tblProjekter";
minKommando.CommandType = CommandType.Text;
minKommando.Connection = minForbindelse;
minKommando.Connection.Open();
minReader = minKommando.ExecuteReader(CommandBehavior.CloseConnection);
minDataTabel = new DataTable();
minDataTabel.Load(minReader);
gvData.DataSource = minDataTabel;
gvData.DataBind();
minDataTabel.Dispose();
minKommando.Dispose();
minForbindelse.Dispose();
}
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim minDataTabel As DataTable
Dim minReader As SqlDataReader
Dim minForbindelse As SqlConnection = New SqlConnection()
minForbindelse.ConnectionString =
ConfigurationManager.ConnectionStrings("ASPNET35KursusConnectionString").ToString()
Dim minKommando As SqlCommand = New SqlCommand()
minKommando.CommandText = "Select * from tblProjekter"
minKommando.CommandType = CommandType.Text
minKommando.Connection = minForbindelse
minKommando.Connection.Open()
minReader = minKommando.ExecuteReader(CommandBehavior.CloseConnection)
minDataTabel = New DataTable()
minDataTabel.Load(minReader)
gvData.DataSource = minDataTabel
gvData.DataBind()
minDataTabel.Dispose()
minKommando.Dispose()
minForbindelse.Dispose()
End SubVed godt at vi har set dette før, men håber det giver mening alligevel.
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.<<- Parametre
Introduktion - mastersider ->>