An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.
-
Upload
ashlie-blake -
Category
Documents
-
view
220 -
download
3
Transcript of An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.
![Page 1: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/1.jpg)
An Introduction to ADO.Net
Marmagna Desai.NET Seminar, Fall-2003
![Page 2: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/2.jpg)
Contents
• What is ADO.Net?• What happened to ADO?• The ADO.Net object structure• Connecting• Commanding• Readers and DataSets
![Page 3: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/3.jpg)
What is ADO.Net?
• The data access classes for the .Net framework
• Designed for highly efficient data access
• Support for XML and disconnected record sets
![Page 4: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/4.jpg)
And the .Net framework?
• A standard cross language interface
• Encapsulation of services, classes and data types
• Uses XML for data representation
![Page 5: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/5.jpg)
Where does ADO sit?V
isual S
tud
io .N
ET
VB C# C++ Jscript …
Common Language Specification
ASP.Net Windows Forms
ADO.Net XML.Net
Base Class Library
Common Language Runtime (CLR)
Windows COM+ Services
![Page 6: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/6.jpg)
What happened to ADO?
• ADO still exists.• ADO is tightly coupled to client
server architectures• Needs COM marshalling to pass
data between tiers• Connections and locks are typically
persisted
![Page 7: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/7.jpg)
ADO / ADO.Net ComparisonsFeature ADO ADO.Net
In memory data storage
Recordset objectMimics single table
Dataset objectContains DataTables
Data Reads Sequential Sequential or non-sequential
Data Sources
OLE/DB via the Connection object
Managed provider calls the SQL APIs
![Page 8: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/8.jpg)
ADO / ADO.Net ComparisonsFeature ADO ADO.Net
Disconnected data
Limited support, suitable for R/O
Strong support, with updating
Passing datasets
COM marshalling DataSet support for XML passing
Scalability Limited Disconnected access provides scalability
![Page 9: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/9.jpg)
Client
SQL .NET
Data Provider
OLE DB .NET Data Provider
ODBC .NET Data Provider
OLE DB Provider
ODBC Driver
SQL SERVER
Other DB
Other DB
.NET Data Providers.NET Data Providers
![Page 10: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/10.jpg)
Rows
DataSet
.Net Data ProviderClient
Connection Command
databaseDataAdapter
DataReader
Data Provider Functionality
![Page 11: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/11.jpg)
ADO.Net object modelDataAdapter
Command
DataSet
Errors Collection
Connection Parameters
Data Source
Fill
Update
Sele
ctC
om
mand
Inse
rtC
om
man
d
Upd
ate
Com
mand
Dele
teC
om
man
d
![Page 12: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/12.jpg)
Namespaces
• System.Data & System.Data.Common
• System.Data.SqlClient &System.Data.OleDB
• System.Data.SqlTypes• System.XML &
System.XML.Schema
![Page 13: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/13.jpg)
Using Namespaces
• VB.NetImports System.DataImports System.Data.SqlClientDim sqlAdp as SqlDataAdapter
• C#using System.Data;using System.Data.SqlClient;SqlDataAdapter sqlAdp= new SqlDataAdapter();
![Page 14: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/14.jpg)
SQL Namespace Objects
• using System.Data.SqlClient;• SqlConnectionSqlConnection• SqlCommandSqlCommand• SqlDataReaderSqlDataReader• SqlDataAdapterSqlDataAdapter• SqlParameter• SqlParameterCollection• SqlError• SqlErrorCollection• SqlException• SqlTransaction• SqlDbType
![Page 15: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/15.jpg)
Connecting to SQL
• using System.Data.SqlClient;
string sConnectionString = "Initial Catalog=Northwind; Data Source=localhost; Integrated Security=SSPI;";
SqlDataAdapter sqlAdp= new SqlDataAdapter(sConnectionString);
sqlAdp.Close();sqlAdp.Dispose();
![Page 16: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/16.jpg)
Connection Pooling
• ADO.Net pools connections.When you close a connection it is released back into a pool.
• SqlConnection conn = new SqlConnection();conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=northwind";conn.Open(); // Pool A is created.
• SqlConnection conn = new SqlConnection();conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=pubs";conn.Open(); // Pool B is created because the connection strings differ.
• SqlConnection conn = new SqlConnection();conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=northwind";conn.Open(); // The connection string matches pool A.
![Page 17: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/17.jpg)
Getting data
• SqlCommandExecuteReaderExecuteNonQueryExecuteScalarExecuteXMLReader
• SqlDataAdapterDataSet
![Page 18: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/18.jpg)
Using the command object
• SqlCommandMultiple constructors
• New()• New(cmdText)• New(cmdText, connection)• New(cmdText, connection, transaction)
![Page 19: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/19.jpg)
Using the command object• string sSelectQuery =
"SELECT * FROM Categories ORDER BY CategoryID";string sConnectionString = "Initial Catalog=Northwind; Data Source=localhost; Integrated Security=SSPI;";SqlConnection objConnect = new SqlConnection(sConnectString);SqlCommand objCommand = new SqlCommand(sSelectQuery, objConnect);/*
• objCommand.CommandTimeout = 15;objCommand.CommandType = CommandType.Text;
• */
objConnect.Open();
SqlDataReader drResults;drResults = objCommand.ExecuteReader()
drResults.Close();objConnect.Dispose();
![Page 20: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/20.jpg)
Command Methods
• .ExecuteReader() - Returns DataReader
• .ExecuteNonQuery() - Returns # of Rows Affected
• .ExecuteXMLReader() - Returns XMLReader Object to Read XML documentation
• .ExecuteScaler() - Returns a Single Value e.g. SQL SUM function.
![Page 21: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/21.jpg)
The DataReader object
• DataReader objects are highly optimised for fast, forward only enumeration of data from a data command
• A DataReader is not disconnected
![Page 22: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/22.jpg)
The DataReader object
• Access to data is on a per record basis.
• Forward only• Read only• Does support multiple recordsets
![Page 23: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/23.jpg)
Creating a data reader
SqlDataReader sqlReader; sqlReader = sqlCommand.ExecuteReader();
while (sqlReader.Read()) { // process, sqlReader("field")}sqlReader.Dispose();
![Page 24: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/24.jpg)
Other Methods
• GetString(), GetInt() etc.• GetSqlString(), GetSqlInt32() etc.• GetValues()• IsDBNull()• GetSchemaTable()
![Page 25: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/25.jpg)
DataSets
• In-memory representation of data contained in a database/XML
• Operations are performed on the DataSet, not the data source
• Can be created programmatically, using a DataAdapter or XML schema and document (or any mixture)
![Page 26: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/26.jpg)
Creating DataSets
• Setup SqlConnection• Setup a SqlDataAdapter• Create a DataSet• Call the .Fill() method on the DA
![Page 27: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/27.jpg)
DataAdapters
• Pipeline between DataSets and data sources
• Geared towards functionality rather than speed
• Disconnected by design• Supports select, insert, delete,
update commands and methods
![Page 28: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/28.jpg)
DataAdapters
• Must always specify a select command
• All other commands can be generated or specified
![Page 29: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/29.jpg)
Using the DataAdapter
SQLDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand =new SqlCommand ("select * from authors“, sqlConnection);
DataSet sqlDS = new DataSet("authorsTable");
sqlDA.Fill(sqlDS, "authorsTable");
![Page 30: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/30.jpg)
DataAdapters
• For speed and efficiency you should set your own InsertCommand, UpdateCommand and DeleteCommand
• Call GetChanges to seperates the updates, adds and deletes since the last sync. Then sync each type.
![Page 31: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/31.jpg)
DataTables
• A DataSet contains one or more DataTables.
• Fields are held within the DataTable.
• And in DataRows, DataColumns.
![Page 32: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/32.jpg)
Sets, Tables and Rows
DataSet
DataTable
DataTableDataRowDataRow
![Page 33: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/33.jpg)
Using DataTables
With a DataTable we can• Insert, modify and update• Search• Apply views• Compare• Clear• Clone and Copy
![Page 34: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/34.jpg)
DataRelations
• New to ADO.Net• Tables within a DataSet can now
have relationships, with integrity.• Supports cascading updates and
deletes.
![Page 35: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/35.jpg)
DataViews
• Like a SQL view• Single, or multiple tables• Normally used with GUI
applications via Data Binding.
![Page 36: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/36.jpg)
References
• ADO.Net Programmer’s ReferenceBilbija, Dickenson et al.Wrox Press
• http://oberon.idunno.org/sql/• My email :
![Page 37: An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649f155503460f94c2a988/html5/thumbnails/37.jpg)
Thank You!!
-Marmagna Desai