Introduktion ADO.NET är en samling objekt som hanterar data och anslutning till datakällor. ADO.NET Data container objects - vanligast av dessa är DataSet, används vid lagring av data ”Ett effektivt sätt att kommunicera med datakällor” Data provider objects - Connection, Command och DataReader ADO.NET baserar sig bland annat på SQL och XML Lagret mellan kod och data Skapa anslutning till databas Skapa en koppling mot en Access-databas med hjälp av objektet OleDbConnection ADO.NET Data Objects OLE DB .NET Provider SQL Server .NET Provider OLE DB Driver Data Source ODBC .NET Provider using System.Data; using System.Data.OleDb; Oracle .NET Provider … OleDbConnection myConnection = new OleDbConnection(); myConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Server.MapPath("App_Data\\PhotoDatabase.accdb"); ODBC Driver SQL Server Database Data Source Oracle Database Källa: Beginning ASP.NET 2.0 in C# 2005 Apress Uppdatera databas Direkt dataåtkomst Database Connection Object Command Object Uppdatera data med objektet OleDbCommand Command Object DataReader Object Your web page code Send Update/Delete command Retrieve read-only fast forward data OleDbCommand myCommand = new OleDbCommand ("Update tblTable Set Age=36 where Name='Urban'", myConnection); try { myConnection.Open(); myCommand.ExecuteNonQuery(); } catch (Exception err) { Använd try-catch-block Response.Write(err); för att uppnå robusthet } finally { myConnection.Close(); } Källa: Beginning ASP.NET 2.0 in C# 2005 Apress 1 Objektet DataReader Demo: Direkt dataåtkomst Direkt dataåtkomst baserad på: • OleDbConnection • OleDbCommand • OleDbDataReader Skicka en SQL-fråga med objektet OleDbCommand och läs resulterande svar med OleDbDataReader string strSQL = "Select * From tblTable"; OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection); myConnection.Open(); OleDbDataReader myReader; myReader = myCommand.ExecuteReader(); while (myReader.Read()) { Response.Write(myReader.GetString(1) + "<br>"); } myReader.Close(); Frånkopplad dataåtkomst Disconnected data << Frånkopplad data “Live” Connected data >> Database InsertCommand DeleteCommand Connection Object UpdateCommand Command Object SelectCommand DataSet Object Web page code DataAdapter Object Källa: Beginning ASP.NET 2.0 in C# 2005 Apress Objektet DataSet DataSet Object DataTable Object DataSet DataSetObject Object Tables Collection Rows Collection Relations Collection Columns Collection Constraints Collection Relations Object DefaultView DataRow Object DataColumn Object Constraint Object DataView Object Källa: Beginning ASP.NET 2.0 in C# 2005 Apress Objektet OleDbDataAdapter Objektet lagrar en kopia av data i primärminnet på webbservern Levererar data mellan databaser och DataSet och tvärt om via metoderna Fill och Update Har ett antal Egenskaper, Properties Att hämta data ur en databas och leverera till ett DataSet är enkelt - den vanligaste är Tables Har ett antal Metoder, Methods ex. ReadXML och WriteXML Objektet OleDbCommandBuilder gör det enkelt att uppdatera en databas med data från ett DataSet Kan innehålla flera tabeller, deras relationer... 2 Objektet DataRow Ändra och lägg till data i ett DataSet med hjälp av objektet DataRow OleDbCommand myCommand = new OleDbCommand(SelectSQL, myConnection); OleDbDataAdapter myAdapter = new OleDbDataAdapter(myCommand); DataSet ds = new DataSet(); myConnection.Open(); myAdapter.Fill(ds, "Personer"); myConnection.Close(); ds.Tables["Personer"].Rows[1]["Name"] = "Hanna"; //ds.Tables["Personer"].Rows[1][1] = "Hanna"; OleDbDataAdapter (forts) DataRow rowNew; rowNew = ds.Tables["Personer"].NewRow(); rowNew["Name"] = "Ida"; rowNew["Age"] = 12; ds.Tables["Personer"].Rows.Add(rowNew); foreach (DataRow row in ds.Tables["Personer"].Rows) { Response.Write(row["Name"].ToString() + " "); Response.Write(row["Age"].ToString() + "<br>"); } ADO.NET och Web.Config Uppdatera en Databas med data från ett DataSet Anslut till databas baserat på information i Web.Config int added = 0; myConnection.Open(); <connectionStrings> <add name="myConnection" connectionString="Provider=Microsoft.ACE.OLEDB.12.0; Data Source=c:\inetpub\wwwroot\ADO.NETDemo\ App_Data\PhotoDatabase.accdb " /> </connectionStrings> added = myAdapter.Update(ds, "Personer"); Och ändra ConnectionString enligt nedan… - OleDbCommandBuilder genererar helt automatiskt SQL-satser som motsvarar de förändringar som skett i data lagrat i DataSet! OleDbConnection myConnection = new OleDbConnection(); myConnection.ConnectionString = WebConfigurationManager. ConnectionStrings["myConnection"].ConnectionString; OleDbCommandBuilder myCommandBuilder = new OleDbCommandBuilder(myAdapter); myAdapter = myCommandBuilder.DataAdapter; Databindning Enkel databindning Binder data mot en variabel tillhörande en webbserverkontroll n <%# variabel %> Avancerad databindning Binder data i ett DataSet direkt till olika objekt n DropDownList n GridWiew n Mfl - Vi återkommer runt databindning och webbserverkontroller! 3