ADO.NET Introduktion Lagret mellan kod och data Skapa anslutning

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