DataReader objektet

Som beskrevet tidligere er DataReader objektet en simpel forward-only og read-only cursor. Den kræver direkte forbindelse til databasen og giver en rigtig effektiv metode til at gennemløbe et datasæt.

Når DataReader objektet bruges er det vigtigt at sørge for at lukke forbindelsen til databasen efter brug - den bliver ikke lukket automatisk.

Et lille eksempel, der forudsætter en aspx side med et enkelt gridview objekt:


using System.Data.SqlClient;

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        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);
        gvProjekter.DataSource = minReader;
        gvProjekter.DataBind();
        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
    If Not Page.IsPostBack Then
        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)
        gvProjekter.DataSource = minReader
        gvProjekter.DataBind()
        minKommando.Dispose()
        minForbindelse.Dispose()
    End If
End Sub

Læg mærke til at der er et par imports/using der er nødvendige og at ren copy-paste ikke er mulig.

I eksempelet her er der ikke brugt eksplicit lukning af forbindelsen, med CommandBehavior.CloseConnection - den kan kun bruges i tilfælde, hvor vi "bare" læser fra ende til anden.

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.