Accessing SQL Server and OLE DB from.NET Svetlin Nakov Telerik Corporation www.telerik.com.

Slides:



Advertisements
Similar presentations
17. Data Access ADO.Net Architecture New Features of ADO.NET
Advertisements

Database Connections with ASP.Net
ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA.
1 Interface IDbConnection ConnectionString defines data base connection Open and close connection Properties of connection object Creates Command-Object.
Chapter 10 ADO. What is ADO? ADO is a Microsoft technology ADO stands for ActiveX Data Objects ADO is a programming interface to access data in a database.
Introduction to Database Processing with ADO.NET.
1 ADO.NET. 2.NET Framework Data Namespaces System.Data –Base set of classes and interfaces for ADO.NET System.Data.Common –Classes shared by the.NET Data.
ADO. NET. What is “ADO.Net”? ADO.Net is a new object model for dealing with databases in.Net. Although some of the concepts are similar to the classical.
ASP.NET Programming with C# and SQL Server First Edition Chapter 8 Manipulating SQL Server Databases with ASP.NET.
Chapter 12 Database Connectivity with ASP.NET JavaScript, Third Edition.
Programming in ADO.NET: Data-Centric Applications and ADO.NET Original copyright by Microsoft, 2002, with minor modifications by Dan Eaves, 2005.
Objective In this session we will discuss about : What is ADO. NET ?
Overview of ADO.NET Chapter 1 ADO.NET 4.0 Development.
Accessing SQL Server and MySQL – Live Demo Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training
ADO.NET – part II August 2004 [ Marmagna Desai]. CONTENTS ADO vs ADO.NET ADO.NET – Managed providers Connecting to Database SqlConnection Selecting Database.
ODBC, OLE DB, and ADO Introduction Dr. Ron Eaglin.
ADO.NET A2 Teacher Up skilling LECTURE 3. What’s to come today? ADO.NET What is ADO.NET? ADO.NET Objects SqlConnection SqlCommand SqlDataReader DataSet.
1 UCN Technology: Computer Science: Autumn 2012 ADO.NET 2.0 Architecture DataReader DataSet Connection factory Config file.
Intro to C#.net and EF Ilan Shimshoni. The Three Faces of ADO.NET The connected layer – Directly connecting to the DB The disconnected layer – Using datasets.
Developing Web Applications Using Microsoft ® Visual Studio ® 2008.
A Simple Introduction. What is ADO.net? First the word ADO stands for ActiveX Data Objects And it is an integral part of.Net Framework of Microsoft hence.
Lecture Set 14 B new Introduction to Databases - Database Processing: The Connected Model (Using DataReaders)
Needs for Accessing Database To make your web site more dynamic and maintainable, you can display information on your web pages that are retrieved from.
Databases and Data Access  Introduction to ADO.NET  ADO.NET objects  ADP.NET namespaces  Differences between ADO and ADO.NET.
ADO.Net CS795. What is ADO.Net? Database language spoken by managed applications ADO.net database accesses go through modules: data providers –SQL Server.Net.
.NET Data Access and Manipulation ADO.NET. Overview What is ADO.NET? Disconnected vs. connected data access models ADO.NET Architecture ADO.NET Core Objects.
1 Introduction to ADO.NET Microsoft ADO.NET 2.0 Step by Step Rebecca M Riordan Microsoft Press, 2006.
Chapter 3 Introduction to ADO.NET 3.1 The ADO and ADO.NET ActiveX Data Object (ADO) is developed based on Object Linking and Embedding (OLE) and Component.
 It is the primary data access model for.Net applications  Next version of ADO  Can be divided into two parts ◦ Providers ◦ DataSets  Resides in System.Data.
Database, SQL, and ADO.NET- Part 1 Session 11 Mata kuliah: M0874 – Programming II Tahun: 2010.
Copyright ©2004 Virtusa Corporation | CONFIDENTIAL ADO.Net Basics Ruwan Wijesinghe Trainer.
Objectives In this lesson, you will learn to: *Identify the need for ADO.NET *Identify the features of ADO.NET *Identify the components of the ADO.NET.
10/26/20151 Chapter 3 Introduction to ADO.NET In this chapter, you will: Learn the basic classes in ADO.NET and its architecture Learn the different ADO.NET.
ASP.NET Rina Zviel-Girshin Lecture 5
Module 9: Accessing Relational Data Using Microsoft Visual Studio.NET.
Module 7: Accessing Data by Using ADO.NET
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 Introduction to ADO.NET ADO.NET - Lesson 01  Training time: 10 minutes  Author:
1 UCN Technology: Computer Science: Autumn 2012 ADO.NET 2.0 Architecture DataReader DataSet Connection factory Config file.
1.Net programmingADO.NETNOEA / PQC ADO.NET Architecture Connection factory Config file DataReader DataSet DataGrid Autogeneration of SQL.
Presented by Joseph J. Sarna Jr. JJS Systems, LLC
Lecture Set 14 B new Introduction to Databases - Database Processing: The Connected Model (Using DataReaders)
An Introduction to ADO.Net Marmagna Desai.NET Seminar, Fall-2003.
Module 3: Performing Connected Database Operations.
ADO.NET connections1 Connecting to SQL Server and Oracle.
 It is the primary data access model for.Net applications  Next version of ADO  Can be divided into two parts ◦ Providers ◦ DataSets  Resides in System.Data.
1 11/10/05CS360 Windows Programming ADO.NET. 2 11/10/05CS360 Windows Programming ADO.NET  Behind every great application is a database manager o Amazon.
Accessing SQL Server and MySQL from.NET and C# Learning & Development Team Telerik Software Academy.
ADO.Net CS795. What is ADO.Net? Database language spoken by managed applications ADO.net database accesses go through modules: data providers –SQL Server.Net.
HNDIT Rapid Application Development
Module 4 Introduction ADO.NET.
C# .NET Software Development
Active Data Objects Using.Net ADO.Net Farooq Ahmed Amna Umber Summayya Shehzad.
Data Access. ADO.NET ADO.NET is the primary library for building database solutions within the.NET Framework. ADO.NET does not replace ADO. ADO and OLEDB.
ADO .NET from. ADO .NET from “ADO .Net” Evolution/History of ADO.NET MICROSOFT .NET “ADO .Net” Evolution/History of ADO.NET History: Most applications.
.NET Data Access and Manipulation
 ADO.NET is an object-oriented set of libraries that allows you to interact with data sources  Commonly, the data source is a database, but it could.
ASP.NET Programming with C# and SQL Server First Edition
Data Access with ADO.NET
Introduction to ADO.NET
DB Apps Introduction Intro to ADO.NET SQL SoftUni Team DB Apps Intro
Introduction to Database Processing with ADO.NET
Introduction to Database Processing with ADO.NET
ADO.NET Framework.
Lecture 6 VB.Net SQL Server.
Overview of Data Access
Overview of Data Access
Lecture Set 14 B new Introduction to Databases - Database Processing: The Connected Model (Using DataReaders)
Chapter 10 ADO.
M S COLLEGE OF ART’S, COMM., SCI. & BMS Advance Web Programming
Introduction to Database Programming through ADO. NET
Presentation transcript:

Accessing SQL Server and OLE DB from.NET Svetlin Nakov Telerik Corporation

1. Data Access Models – Connected, Disconnected, ORM 2. ADO.NET Architecture and Data Providers 3. Accessing SQL Server (Connected Model)  Using SqlConnection, SqlCommand and SqlDataReader  Parameterized Queries 4. Accessing Other Databases 2

Data Access Models

 Connected data access model  Applicable to an environment where the database is constantly available  Too much effort to issue SQL commands by hand 4 DB constantly open connection Database ADO.NET client DB

 Disconnected data access model  A subset of the central database is copied locally at the client and he works with the copy  Database synchronization is done offline 5 DB temporary (offline) connection Database ADO.NET client DB

 ORM data access model  Maps database tables to classes and objects  Objects can be automatically persisted in the database  Can operate in both connected and disconnected modes 6

 ORM model benefits  Increased productivity – writing less code  Use objects with associations instead of tables and SQL commands  Integrated object query mechanism  ORM model drawbacks:  Less flexibility – SQL is automatically generated  Performance issues (sometimes) 7

ADO.NET Architecture

 ADO.NET is a standard.NET class library for accessing databases, processing data and XML  An API for working with data in.NET  Supports connected, disconnected and ORM data access models  Excellent integration with LINQ, XML and WCF  Allows executing SQL in RDBMS systems  DB connections, data readers, DB commands  Supports the ORM approach  LINQ-to-SQL and ADO.NET Entity Framework 9

 System.Data  ADO.NET core classes  System.Data.Common  Common classes for all ADO.NET technologies  System.Data.Linq  LINQ to SQL framework classes  System.Data.Entity  Entity Framework classes  System.Xml  XML processing classes 10

11 SQL Server.NET Data Provider OleDb.NET Data Provider Oracle.NET Data Provider ODBC.NET Data Provider DataReader DbCommand Connected Model DataSet DataAdapter Disconn. Model … DataContext Table<T> LINQ-to-SQL ObjectContext EntityObject Entity Framework …

 Data Providers are collections of classes that provide access to various databases  For different RDBMS systems different Data Providers are available  Each provider uses vendor-specific protocols to talk to the database server  Data providers define several common objects:  Connection – to connect to the database  Command – to execute an SQL command  DataReader – to retrieve data  Entity Framework support (optionally) 12

 Several standard ADO.NET Data Providers come as part of.NET Framework  SqlClient – accessing SQL Server  OleDB – accessing standard OLE DB data sources  Odbc – accessing standard ODBC data sources  Oracle – accessing Oracle database  Third party Data Providers are available for:  MySQL, PostgreSQL, Interbase, DB 2, SQLite  Other RDBMS systems and data sources 13

 ADO.NET Driver for MySQL (Connector/NET)   Supports Entity Framework (from version 6.0)  Oracle Data Provider for.NET (ODP.NET)   Does not support Entity Framework .NET Data Provider for PostgreSQL   Supports Entity Framework 14

 System.Data.SqlClient and System.Data.SqlTypes  Data Provider classes for accessing SQL Server  System.Data.OleDb  Classes for accessing OLE DB data sources  System.Data.Odbc  Classes for accessing ODBC data sources  System.Data.Oracle  Classes for accessing Oracle databases 15

 Retrieving data in connected model 1.Open a connection ( SqlConnection ) 2.Execute command ( SqlCommand ) 3.Process the result set of the query by using a reader ( SqlDataReader ) 4.Close the reader 5.Close the connection 16 SqlConnection SqlCommand SqlDataReader Database SqlParameter SqlParameter SqlParameter

 Disconnected model – data is cached in a DataSet 1.Open a connection ( SqlConnection ) 2.Fill a DataSet (using SqlDataAdapter ) 3.Close the connection 4.Modify the DataSet 5.Open a connection 6.Update changes into the DB 7.Close the connection 17 SqlConnection SqlDataAdapter DataSet Database Warning: DataSets / DataAdapters are legacy technology. Not used since.NET 3.5.

 LINQ to SQL is ORM framework for SQL Server 1.Create object models mapping the database 2.Open a data context 3.Retrieve data with LINQ / modify the tables in the data context 4.Persist the data context changes into the DB 5.Connection is auto-closed 18 SqlConnection DataContext Database TableTable Table

 Entity Framework is generic ORM framework 1.Create entity data model mapping the database 2.Open an object context 3.Retrieve data with LINQ / modify the tables in the object context 4.Persist the object context changes into the DB 5.Connection is auto-closed 19 SqlConnection ObjectContext Database EntityEntity Entity EntityClient Data Provider

SQL Client Data Provider

 SqlConnection  Establish database connection to SQL Server  SqlCommand  Executes SQL commands on the SQL Server through an established connection  Could accept parameters ( SQLParameter )  SqlDataReader  Retrieves data (record set) from SQL Server as a result of SQL query execution 21

 SqlConnection holds a connection to SQL Server database  Requires a valid connection string  Connection string example:  Connecting to SQL Server: 22 Data Source=(local)\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI; SqlConnection con = new SqlConnection( "Server=.\SQLEXPRESS;Database=Northwind; "Server=.\SQLEXPRESS;Database=Northwind; Integrated Security=true"); Integrated Security=true");con.Open();

 Database connection string  Defines the parameters needed to establish the connection to the database  Main parameters for SQL Server connections:  Provider – name of the DB driver  Data Source / Server – server name / IP address + database instance name  Database / Initial Catalog – database name  User ID / Password – credentials 23

 Main parameters for SQL Server connections:  AttachDbFilename=some_db.mdf  Attaches a local database file at startup  Supported by SQL Express only  Server=server_name\database_instance  ". " or " (local) " or " SOME_SERVER "  Database instance is " MSSQL ", " SQLEXPRESS " or other SQL Server instance name  Integrated Security – true / false 24

 Explicitly opening and closing a connection  Open() and Close() methods  Works through the connection pool  Implicitly opening and closing the connection  Done automatically by DataAdapters, DataContexts and ObjectContexts  Connections are IDisposable objects  Can be managed with the using construct 25

 Creating and opening connection to SQL Server (database TelerikAcademy ) 26 SqlConnection dbCon = new SqlConnection( "Server=.\\SQLEXPRESS; " + "Server=.\\SQLEXPRESS; " + "Database=TelerikAcademy; " + "Database=TelerikAcademy; " + "Integrated Security=true"); "Integrated Security=true");dbCon.Open();using(dbCon){ // Use the connection to execute SQL commands here … // Use the connection to execute SQL commands here …}

27 SqlConnection SqlDataReaderXmlReader SqlParameter SqlCommand Database SqlParameter SqlParameter

 Retrieving data in connected model 1.Open a connection ( SqlConnection ) 2.Execute command ( SqlCommand ) 3.Process the result set of the query by using a reader ( SqlDataReader ) 4.Close the reader 5.Close the connection 28 SqlConnection SqlCommand SqlDataReader Database SqlParameter SqlParameter SqlParameter

 Executes an SQL statement or a stored procedure  More important properties  Connection – gets / sets the SqlConnection of the command  CommandType – the type of the command  CommandType.StoredProcedure  CommandType.TableDirect  CommandType.Text  CommandText – the body of the SQL query or the name of the stored procedure  Parameters 29

 More important methods  ExecuteScalar()  Returns a single value (the value in the first column of the first row of the result set)  The returned value is System.Object but can be casted to the actual returned data type  ExecuteReader()  Returns a SqlDataReader  It is a cursor over the returned records (result set)  CommandBehavior – assigns some options 30

 More important methods  ExecuteNonQuery()  Used for non-query SQL commands, e.g. INSERT  Returns the number of affected rows ( int )  ExecuteXmlReader()  Returns the record set as XML  Returns an XmlReader  Supported in SqlClient Data Provider only 31

 SqlDataReader retrieves a sequence of records (cursor) returned as result of an SQL command  Data is available for reading only (can't be changed)  Forward-only row processing (no move back)  Important properties and methods:  Read() – moves the cursor forward and returns false if there is no next record  Item (indexer) – retrieves the value in the current record by given column name or index  Close() – closes the cursor and releases resources 32

33 SqlConnection dbCon = new SqlConnection( "Server=.\\SQLEXPRESS; " + "Server=.\\SQLEXPRESS; " + "Database=TelerikAcademy; " + "Database=TelerikAcademy; " + "Integrated Security=true"); "Integrated Security=true");dbCon.Open();using(dbCon){ SqlCommand command = new SqlCommand( SqlCommand command = new SqlCommand( "SELECT COUNT(*) FROM Employees", dbCon); "SELECT COUNT(*) FROM Employees", dbCon); decimal employeesCount = command.ExecuteScalar(); decimal employeesCount = command.ExecuteScalar(); Console.WriteLine("Employees count: {0} ", Console.WriteLine("Employees count: {0} ", employeesCount); employeesCount);}

34 SqlConnection dbCon = new SqlConnection(…); dbCon.Open();using(dbCon){ SqlCommand command = new SqlCommand( SqlCommand command = new SqlCommand( "SELECT * FROM Employees", dbCon); "SELECT * FROM Employees", dbCon); SqlDataReader reader = command.ExecuteReader(); SqlDataReader reader = command.ExecuteReader(); using (reader) using (reader) { while (reader.Read()) while (reader.Read()) { { string firstName = (string)reader["FirstName"]; string firstName = (string)reader["FirstName"]; string lastName = (string)reader["LastName"]; string lastName = (string)reader["LastName"]; decimal salary = (decimal)reader["Salary"]; decimal salary = (decimal)reader["Salary"]; Console.WriteLine("{0} {1} - {2}", Console.WriteLine("{0} {1} - {2}", firstName, lastName, salary); firstName, lastName, salary); } }}

Live Demo

 What are SqlParameters ?  SQL queries and stored procedures can have input and output parameters  Accessed through the Parameters property of the SqlCommand class  Important properties of SqlParameter :  ParameterName – name of the parameter  DbType – SQL type ( NVarChar, Timestamp, …)  Size – size of the type (if applicable)  Direction – input / output 36

37 private void InsertProject(string name, string description, DateTime startDate, DateTime? endDate) DateTime startDate, DateTime? endDate){ SqlCommand cmd = new SqlCommand("INSERT INTO Projects " + SqlCommand cmd = new SqlCommand("INSERT INTO Projects " + "(Name, Description, StartDate, EndDate) VALUES " + "(Name, Description, StartDate, EndDate) VALUES @end)", dbCon); cmd.Parameters.Add(new name)); cmd.Parameters.Add(new name)); cmd.Parameters.Add(new description)); cmd.Parameters.Add(new description)); cmd.Parameters.Add(new startDate)); cmd.Parameters.Add(new startDate)); SqlParameter sqlParameterEndDate = SqlParameter sqlParameterEndDate = new endDate); new endDate); if (endDate == null) if (endDate == null) sqlParameterEndDate.Value = DBNull.Value; sqlParameterEndDate.Value = DBNull.Value; cmd.Parameters.Add(sqlParameterEndDate); cmd.Parameters.Add(sqlParameterEndDate); cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();}

 Retrieval of an automatically generated primary key is specific to each database server  In SQL Server IDENTITY column is used  Obtained by executing the following query:  Example of obtaining the automatically generated primary key in ADO.NET: 38 SELECT SqlCommand selectIdentityCommand = new SqlCommand("SELECT dbCon); new SqlCommand("SELECT dbCon); int insertedRecordId = (int) (decimal) selectIdentityCommand.ExecuteScalar(); (decimal) selectIdentityCommand.ExecuteScalar();

Live Demo

 ADO.NET supports accessing various databases via their Data Providers:  OLE DB – supported internally in ADO.NET  Access any OLE DB-compliant data source  E.g. MS Access, MS Excel, MS Project, MS Exchange, Windows Active Directory, text files  Oracle – supported internally in ADO.NET  MySQL – third party data provider  PostgreSQL – third party data provider 41

 ADO.NET Data Providers implement the following interfaces:  IDbConnection  IDbCommand, IDataParameter  IDataReader  IDbDataAdapter 42

 ADO.NET provides the following base classes:  DbConnection  DbCommand / DbParameter  DbDataReader  DbTransaction  DbParameterCollection  DbDataAdapter  DbCommandBuilder  DbConnectionStringBuilder  DbDataPermission 43

 OleDbConnection – establishes a connection to an OLE DB source of data  OleDbCommand – executes an SQL commands through an OLE DB connection to a DB  OleDbParameter – parameter for a command  OleDbDataReader – to retrieve data from a command, executed through OLE DB 44 OleDbConnection dbConn = Source=C:\MyDB.mdb;Persist Security Info=False"); Source=C:\MyDB.mdb;Persist Security Info=False");

 Suppose we have MS Access database C:\Library.mdb  We have the table Users :  We use the "Microsoft Jet 4.0 Provider" to connect in ADO.NET through OLE DB  We create a connection string component: 45 Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Library.mdb;Persist Security Info=False

Live Demo

Questions?