Presentation is loading. Please wait.

Presentation is loading. Please wait.

Why ADO.NET Not your father’s Data Access.

Similar presentations


Presentation on theme: "Why ADO.NET Not your father’s Data Access."— Presentation transcript:

1 http://adoguy.com Why ADO.NET Not your father’s Data Access

2 http://adoguy.com Who I am Shawn Wildermuth Shawn Wildermuth swildermuth@adoguy.com swildermuth@adoguy.com swildermuth@adoguy.com Author of “Pragmatic ADO.NET Author of “Pragmatic ADO.NET Editor of http://OnDotNet.com Editor of http://OnDotNet.comhttp://OnDotNet.com For More Info: http://adoguy.com For More Info: http://adoguy.comhttp://adoguy.com This Presentation can be found at: This Presentation can be found at: –http://adoguy.com/presentations http://adoguy.com/presentations

3 http://adoguy.com Short History of Data Access VT Objects VT Objects Data Access Objects (DAO/Jet) Data Access Objects (DAO/Jet) Open Database Connectivity (ODBC) Open Database Connectivity (ODBC) OLE for Databases (OLE/DB) OLE for Databases (OLE/DB) ActiveX Data Objects (ADO) ActiveX Data Objects (ADO)

4 http://adoguy.com Why is ADO.NET Better? Disconnected by Design Disconnected by Design Relational by Nature Relational by Nature Integration with XML Integration with XML Framework Supports Real Database Schema Framework Supports Real Database Schema

5 http://adoguy.com Connected vs. Disconnected “The Pizza Delivery Guy” “The Pizza Delivery Guy” Connections are expensive Connections are expensive Keeping connections alive longer than necessary is extremely wasteful Keeping connections alive longer than necessary is extremely wasteful Long lived connections impede load balancing Long lived connections impede load balancing Connections unnecessary while manipulating database results Connections unnecessary while manipulating database results

6 http://adoguy.com Introducing ADO.NET Managed Providers Managed Providers DataSet DataSet DataBinding in ASP.NET DataBinding in ASP.NET DataBinding in WinForms DataBinding in WinForms

7 http://adoguy.com Managed Providers ADO.NET’s Version of Providers (ADO, OLE/DB) and Drivers (ODBC) ADO.NET’s Version of Providers (ADO, OLE/DB) and Drivers (ODBC) Not the only way to access data in.NET (most notably the Xml classes) Not the only way to access data in.NET (most notably the Xml classes) Made up of a number of managed classes that implement known interfaces Made up of a number of managed classes that implement known interfaces

8 http://adoguy.com System.Data Namespace Dataset etc. DataRow DataColumn Data Relation ForeignKeyConstraintDataTable System.Data.Common Namespace etc. DataTableMapping DbDataRecord DataAdapter Your Provider YourCommand YourConnection YourDataReader etc. System.Data.OleDb Namespace OleDbCommand OleDbConnection OleDbDataReader etc. System.Data.SqlClient Namespace SqlCommand SqlConnection SqlDataReader etc.

9 http://adoguy.com Managed Provider Abstraction System.Data DataSet System.Data.SqlClient SqlConnection SqlErrors SqlDataAdapter SqlDataReaderSqlCommand SqlParameter SqlParameters SqlError

10 http://adoguy.com using System; using System.Data; using System.Data.OleDb; class HelloADONET { static void Main() { } OleDbConnection conn = new OleDbConnection("..."); conn.Open(); OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM AUTHORS"; OleDbDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) Console.WriteLine(rdr["au_id"]); conn.Close();

11 http://adoguy.com What are DataSets? Disconnected set of Database Data? Disconnected set of Database Data? In-Memory Database (IMDB)? In-Memory Database (IMDB)? A complex, relational data structure with built-in support for XML serialization? A complex, relational data structure with built-in support for XML serialization? All three? All three?

12 http://adoguy.com The DataSet DataSet Tables DataTable Rows DataRow

13 http://adoguy.com using System; using System.Data; using System.Data.SqlClient; class HelloADONET { static void Main() { } SqlConnection conn = new SqlConnection("..."); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = conn.CreateCommand(); da.SelectCommand.CommandText = "SELECT * FROM AUTHORS"; DataSet dataSet = new DataSet(); da.Fill(dataSet);

14 http://adoguy.com Typed DataSets Strong Typing Strong Typing XSD Based Schema XSD Based Schema Simple to Setup relationships, constraints, etc. Simple to Setup relationships, constraints, etc. Not very much use if you have amorphous data Not very much use if you have amorphous data

15 http://adoguy.com Type DataSet Demo

16 http://adoguy.com Using DataSets Bulk Data Loading is supported Bulk Data Loading is supported Two possible versions of all data, RowState.Original and RowState.Modified Two possible versions of all data, RowState.Original and RowState.Modified Relationship Navigation Relationship Navigation DataViews DataViews

17 http://adoguy.com The Hard Part Disconnected Concurrency Disconnected Concurrency –Optimistic Concurrency Supported by CommandBuilders –Optimistic Concurrency could be more efficient –Pessimistic Concurrency can be achieved with Check-out, Check-in

18 http://adoguy.com XML Integration DataSets XML Serialization DataSets XML Serialization –You can control the Serialization –Full XSD Support –Supports DiffGrams XmlDataDocument XmlDataDocument –View DataSets as XmlDocuments SqlCommands and XmlReader SqlCommands and XmlReader

19 http://adoguy.com Practical Applications of DataSets Stop Writing Business Objects! Stop Writing Business Objects! –Derive from Typed DataSets –Let ADO.NET do the Database work –Write Just Your Business Logic –Deal with data as Relationally –or Hierarchically by using XmlDataDocument

20 http://adoguy.com Scalability in ADO.NET Scalability in ADO.NET Scale Out the Database as DataSets in the Middle Tier Scale Out the Database as DataSets in the Middle Tier Use DiffGrams to Keep DataSets in Sync Use DiffGrams to Keep DataSets in Sync With SQL Server 2K With SQL Server 2K –Can use DiffGrams to update the database –Caveats about different DiffGram format

21 http://adoguy.com DataBinding in ASP.NET ASP.NET DataBinding is read-only ASP.NET DataBinding is read-only –Can bind with DataReaders (but troublesome)

22 http://adoguy.com DataBinding in ASP.NET (2) using System.Data; using System.Web.UI; using System.Web.UI.WebControls; protected ListBox ListBox1; DataSet dataSet = new DataSet(); //... // DataBind ListBox1.DataSource = dataSet; ListBox1.DataMember = "Customers"; ListBox1.DataTextField = "CompanyName"; ListBox1.DataValueField = "CustomerID"; ListBox1.DataBind();

23 http://adoguy.com DataBinding in WinForms Different from ASP.NET Different from ASP.NET –Fully bidirectional –No need to call DataBind() –Allows binding to any property using System.Data; using System.Windows.Forms; DataSet dataSet = new DataSet(); //... listBox1.DataSource = dataSet.Tables[0]; listBox1.DisplayMember = "CompanyName"; listBox1.ValueMember = "CustomerID";

24 http://adoguy.com DataBinding in WinForms (2) Master-Detail Binding Master-Detail Binding –Set multiple object to same DataSource –Set DataMember to name of Relationship –Use CurrencyManager to move the cursor if you do not want to use the master control

25 http://adoguy.com Quick Rants Classic ADO has a role in.NET Classic ADO has a role in.NET Batch Queries are cool! Batch Queries are cool! Caveats for SqlClient’s Connection Pooling Caveats for SqlClient’s Connection Pooling Trust your DBAs and strive to be like them : ) Trust your DBAs and strive to be like them : )

26 http://adoguy.com Questions?


Download ppt "Why ADO.NET Not your father’s Data Access."

Similar presentations


Ads by Google