ITfjernundervisning

ASP.NET / Dataset og datagrid objektet / Database som grundlag

Dataset, datagrid og database

Alle de øvelser vi har lavet med dataset, datagrid og XML dokumenter kan man naturligvis også lave med en "rigtig" database i bunden. Til det formål skal vi bruge dataadapter objektet. Nedenfor har jeg valgt at vise "ret post" eksemplet, da det giver en god illustration af, hvordan man kan bruge dataadapteren.

Eksemplet er baseret på Andeby informationerne, som jeg har lagt ind i en Access database i stedet. Hent den her.

Der er ændringer i Page_Load, UpdateCommand og GetDataset:

VB.NET

Imports System.Data
Imports System.Data.OleDb
    Dim objAdapter As OleDbDataAdapter
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim strConnection As String
        Dim strSQL As String
        Dim objConnection As OledbConnection
        strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("Andeby.mdb")
        objConnection = New OledbConnection(strConnection)
        strSQL = "SELECT * FROM Person"
        objAdapter = New OleDbDataAdapter(strSQL, objConnection)
        If Not IsPostBack Then
            DoDatabind()
        End If
    End Sub
    Private Sub dgridAndeby_UpdateCommand(ByVal ...
        Dim objRows() As DataRow
        Dim dsetAndeby As New DataSet
        Dim strSelect As String
        strSelect = "ID='" + CStr(dgridAndeby.DataKeys(e.Item.ItemIndex)) + "'"
        dsetAndeby = GetDataset()
        objRows = dsetAndeby.Tables(0).Select(strSelect)
        objRows(0).Item("Fornavn") = CType(e.Item.Cells(2).Controls(0), TextBox).Text
        ' Opdater database
        Dim ObjBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(objAdapter)
        objAdapter.UpdateCommand = ObjBuilder.GetUpdateCommand()
        objAdapter.InsertCommand = ObjBuilder.GetInsertCommand()
        objAdapter.DeleteCommand = ObjBuilder.GetDeleteCommand()
        objAdapter.Update(dsetAndeby, "Andeby")
        dgridAndeby.EditItemIndex = -1
        DoDatabind()
    End Sub
    Private Function GetDataset() As DataSet
        Dim dsetAndeby As New DataSet
        objAdapter.Fill(dsetAndeby, "Andeby")
        Return dsetAndeby
    End Function

C#

using System.Data;
using System.Data.OleDb;
  OleDbDataAdapter objAdapter;
  private void Page_Load(object sender, System.EventArgs e)
  {
   String strConnection;
   String strSQL;
   OleDbConnection objConnection;
   strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("Andeby.mdb");
   objConnection = new OleDbConnection(strConnection);
   strSQL = "SELECT * FROM Person";
   objAdapter = new OleDbDataAdapter(strSQL, objConnection);
   if (!IsPostBack)
   {
    DoDatabind();
   }
  }
  private DataSet GetDataset()
  {
   DataSet dsetAndeby = new DataSet();
   objAdapter.Fill(dsetAndeby, "Andeby");
   return dsetAndeby;
  }
  private void UpdateEdit(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   DataRow []objRows;
   DataSet dsetAndeby = new DataSet();
   String strSelect;
   strSelect = "ID=" + (int)dgridAndeby.DataKeys[e.Item.ItemIndex];
   dsetAndeby = GetDataset();
   objRows = dsetAndeby.Tables[0].Select(strSelect);
   objRows[0]["Fornavn"] = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
   // Opdater database
   OleDbCommandBuilder ObjBuilder = new OleDbCommandBuilder(objAdapter);
   objAdapter.UpdateCommand = ObjBuilder.GetUpdateCommand();
   objAdapter.InsertCommand = ObjBuilder.GetInsertCommand();
   objAdapter.DeleteCommand = ObjBuilder.GetDeleteCommand();
   objAdapter.Update(dsetAndeby, "Andeby");
   dgridAndeby.EditItemIndex = -1;
   DoDatabind();
  }
 }
}

 

Sådan gemmer du din connectionstring i web.config

<configuration>
  <appSettings>
    <add key="ConnectionString"
      value="server=localhost;database=Northwind;uid=sa;password=secret;" />
  </appSettings>

</configuration>
strConnection = ConfigurationSettings.AppSettings("ConnectionString")
strConnection = ConfigurationSettings.AppSettings["ConnectionString"];
imports System.Configuration
using System.Configuration;

Cdkatalog


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.