* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Connection
Concurrency control wikipedia , lookup
Microsoft Access wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Extensible Storage Engine wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Functional Database Model wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Relational model wikipedia , lookup
Open Database Connectivity wikipedia , lookup
.NET Mobile Application Development
Data in Distributed Systems
Accessing Data with .NET
Introduction
 In this session we will consider
> The use of databases in mobile and distributed applications
> Connected, client-server database access
- .NET connected data access features
> Disconnected database architecture
- ADO .NET and disconnected data access features
> Distributed data access from mobile and disconnected clients
- SQL Server CE
Database Terminology
 Relational database
> data and relations between them organised in tables. A table is collection of
rows or records. Each row in a table contains the same fields.
 Query
> formal request to a database for information or updates to information
 Stored procedure
> set of SQL commands that can be stored in the server
> gives improved performance as less information needs to be sent between
the server and the client
 Structured Query Language (SQL)
> industry-standard language for creating, updating and, querying relational
databases
Databases in Distributed Systems
 Distributed applications often rely on databases for
> persistent storage
> synchronizing state and ensuring consistency between multiple clients
 Databases
> normally reside on a server
> accessed by clients via the network
 Clients interact with databases using explicit SQL queries
> active connection to database required for each query
Distributed Data Management
 Three key aspects of managing data in distributed
applications
> Caching
- keeping local copies of required data eliminates need for continuous
network connections
> Replication
- propagating changes in cached data back to main data store
- periodically refreshing cached data
> Conflict Resolution
- multiple clients operate simultaneously
- updates of a data item by several clients => conflict
- conflict resolution mechanisms needed
Database Access Methods
 Traditional applications follow a layered model
Application
front end
Business
Logic
Database
Computer A
Computer B
Computer C
 Business logic/client layers interact with the database in a
connected client/server manner
> connection to database opened at start of session and maintained until
session completes
> SQL queries sent individually or in batches to database when required by
application
- application cannot operate if network connection not present
- not ideally suited to mobile / intermittently connected clients
Disconnected Database
Access
 In a disconnected data architecture client
> opens temporary connection to database; required data cached locally and
connection closed
> operates using the cached data
> reconnects to database when connection available and merges any
changes from the locally cached data
 Guaranteed network connection not required for
application to function
Ideally suited to
> mobile device applications
> intermittently connected devices
> clients with high network latencies (e.g. Internet)
.NET Data Access
Features
 .NET supports
> Connected and disconnected data architectures
> Microsoft SQL Server data sources interaction from desktop and mobile
platforms
> Interaction with other database servers through ODBC and OLE from
desktop platforms only
 .NET data access classes contained in
> System.Data - Common data access types
> System.Data.SqlClient - Types used for interacting with MS SQL Server
> System.Data.Odbc - Types used for ODBC database interaction
> System.Data.OleDb - Types used for OLE database interaction
.NET Connected Data
Objects
 Connection object (e.g. SqlConnection)
> Represents connection to data source; used by other objects to interact with data
source
 Command object (e.g. OdbcCommand)
> Represents queries to database or calls to stored procedures
 DataReader object (e.g. OleDbDataReader)
> Allows iteration through rows returned from a query
 Transaction object (e.g. SqlTransaction)
> Provides transactional support
 Parameter object (e.g. SqlParameter)
> Represents parameters to queries or stored procedures
 DataAdapter object (e.g. SqlDataAdapter)
> Bridge between database and the disconnected data objects of ADO .NET
> Used in passing data between ADO .NET objects and data source
Connected Data Access
Example
using System.Data.SqlClient;
...
string connStr = "Initial Catalog=Northwind;Data
Source=localhost;Integrated Security=SSPI;";
string insertQuery = "INSERT INTO Customers (CustomerID,
CompanyName) Values('NWIND', 'Northwind Traders')";
SqlConnection conDB = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(insertQuery);
cmd.Connection = conDB;
conDB.Open();
cmd.ExecuteNonQuery();
conDB.Close();
ADO .NET Disconnected Data
Objects
 DataTable object
> Stores data as collection of rows and columns
 DataColumn object
> Stores information about structure of a DataTable column
 Constraint object
> Enables constraints to be placed on data stored in a DataTable
 DataRow object
> Contains single record from a DataTable
 DataSet object
> Most important ADO .NET object
> Container for multiple DataTables and DataRelations
 DataRelation object
> Defines relationships between DataTables in a DataSet
 DataView object
> Provides sorting and filtering of data in a DataSet
> Enables binding of data to WinForms controls
Using ADO .NET Objects
 ADO .NET objects can
> be created and manipulated independently of a data source
> be constructed to mirror the relational structure of a data source
 Using a DataAdapter object, a DataSet can
> be filled with data from a data source
> merge changed values back in to a data source
> become an offline cache of the data required by an application
- Allows application to operate even when network connection is not
present
Disconnected Data Access
Example
using System.Data;
using System.Data.SqlClient;
...
string connStr = "Initial Catalog=Northwind;Data Source=localhost; Integrated
Security=SSPI;";
SqlConnection conDB = new SqlConnection(connStr);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand("SELECT * FROM Suppliers", conDB);
conDB.Open();
DataSet ds = new DataSet("Customers");
adapter.Fill(ds);
conDB.Close();
string criteria = "Surname = Smith";
DataRow[] matchRows = ds.Tables["Customers"].Select(criteria);
foreach (DataRow row in matchRows) {
string forename = row["Forename"];
string forename = row["Surname"];
Console.WriteLine("Customer "+forename+" "+surname);
}
Databases and Mobile
Devices
 All the preceding techniques can be used with
mobile devices and Compact Framework
 Mobile devices support three other techniques
> SQL Server CE
- SQL Server database engine for WinCE devices
> SQL Server CE Remote Data Access (RDA)
- enables two-way transfer of data between SQL CE database and
networked SQL Server database
> SQL Server Merge Replication
- more powerful mechanism for two-way data transfer between SQL CE
database and networked SQL Server database with automatic conflict
resolution
SQL Server CE
 Lightweight version of MS SQL Server for Windows CE devices
 Supports
> creation, querying, updating and deleting of databases on device
> useful for local caching of data from network databases to enable offline operation
 Supports databases up to 2GB but size limited by available memory
 Accessible from Compact Framework using classes in
System.Data.SQlServerCe namespace
>
>
>
>
>
SqlCeEngine - used to creates new databases
SqlCeConnection
SqlCeCommand
SqlCeDataAdapter
SqlCeDataReader
 Use is similar to standard SQL client
SqlCE Remote Data
Access
 Based around SqlCeRemoteDataAccess class
 Two primary methods
> Pull()
- retrieves data from networked SQL server and copies it to table in local
SQL CE database
- pulled records not locked on networked database
> Push()
- writes modifications back to networked SQL server based on data in
local SQL CE database table
- overwrites changes made by other users to networked database
(optimistic concurrency control)
- may result in lost updates
 Networked SQL Server requires IIS Web server and
specific configuration for RDA
SqlCe Merge Replication
 Extension of SQL Server Merge Replication to
mobile devices
 Three databases used
> Publisher - makes data available for replication
> Distributor - manages replication and updates
> Subscriber - receives/uses replicated data (on CE device)
 Configurable resolvers used to automatically deal
with multiple updates without loss of data
 Merge replication vs Remote Data Access
> requires much more configuration than RDA
> much easier to use – automatically deals with conflicts
Summary
 In this session we have discussed
> Databases in distributed applications
> Connected database access with .NET
> ADO .NET and the disconnected database architecture
> Distributed data access from mobile and disconnected clients
 The accompanying practical exercises demonstrate
> Use of ADO .NET classes in manipulating data
> Using ADO .NET to retrieve data from a networked database using Web
services
Reading and Resources
Reading
Thomas Connolly & Carolyn Begg, Database Systems: A Practical
Approach to Design, Implementation, and Management, AddisonWesley, 2002
David Sceppa, Microsoft ADO .NET Core Reference, Microsoft
Press, 2002
Andy Wigley & Stephen Wheelwright, Microsoft Compact Framework
Core Reference, Microsoft Press, 2003
Chapters 13 – 17, pp 429 – 586
Resources
Microsoft Developer Network, SQL Server Documentation,
http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=
28000409
					 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                            