1 / 70 ADO.NET, i Data Provider e l'architettura connessa Silvano Coriani Developer & Platform Evangelism MCTrainer MCSDeveloper MCADeveloper MCSEInternet.

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Numeri a 100 Electronic flashcard. 1 uno ritorno.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Presente e futuro della religiosità nel nord est DIFFERENZE TRA GENERAZIONI figli e padri italo de sandre 1ids.
MONITORAGGIO MATEMATICA V A Alunni 26 Presenti 23 Quesiti 44 Risposte totali 650 Risultato medio 28,3 media 64,2%
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
Oracle & SQL Server in a .NET World
Luca Bianchi Windows Development Day Bologna 28 gennaio 2005 SQL Server Desktop Engine (MSDE) & SQL Server 2005 Express.
Indagine Congiunturale 2011 Confcooperative Emilia Romagna CONFERENZA STAMPA CONFCOOPERATIVE EMILIA ROMAGNA Bologna, 30 Luglio 2013.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
Frontespizio Economia Monetaria Anno Accademico
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
1 Innovazione dal punto di vista strategico Francesco Berri Medical Director ASTELLAS PHARMA SpA Bologna 10 Giugno 2011.
Associazione Nazionale Medici Cardiologi Ospedalieri
Un DataBase Management System (DBMS) relazionale client/server.
XXIV Congresso ACOI 2005 Montecatini Terme Maggio 2005
Programmazione 1 9CFU – TANTE ore
ELEZIONI REGIONALI 2010 PRIMI RISULTATI E SCENARI 14 aprile 2010.
Canale A. Prof.Ciapetti AA2003/04
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
I lavoratori italiani e la formazione UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA, IN COLLABORAZIONE CON DOXA, PER ANES (febbraio 2005)
Master universitario di II livello in Ingegneria delle Infrastrutture e dei Sistemi Ferroviari Anno Accademico 2012/2013 Cultura dimpresa, valutazione.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
Progetto di applicazioni grafiche. Disegno di forme complesse Prassi : un classe per ciascuna forma Progetta la forma individuando le componenti base.
Cos’è un problema?.
Gli italiani e il marketing di relazione: promozioni, direct marketing, digital marketing UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA RICERCHE PER ASSOCOMUNICAZIONE.
Lezione 2 La progettazione degli esperimenti
STILI DI APPRENDIMENTO ED EVOLUZIONE INTERFACCE
OO _60-59_ OI_53-54 _ OL _ OR_52-47_ OO= Orientamento allOBIETTIVO OI= Orientamento all'INNOVAZIONE OL= Orientamento alla LEADERSHIPOR= Orientamento.
CHARGE PUMP Principio di Funzionamento
Settimana: 3-7 marzo Orariolunedimartedi Mercoledi 5 Giovedi 6 Venerdi lezione intro alla fis mod DR lezione intro alla fis mod DR.
Melfi, 1 aprile 2011 – MediaShow 1 Social Network: possibilità di uso consapevole nella didattica Uso, consapevolezza, opportunità, proposte Caterina Policaro.
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
ISTITUTO COMPRENSIVO TORREGROTTA REPORT DATI QUESTIONARIO Alunni Scuola Primaria Classe V A.S.2012/2013.
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ISOIVA (LOCALE) TO ISOIVA (WEB) RIPARTIZIONE INFORMATICA UFFICIO APPLICATIVI AMMINISTRATIVI 13/04/2011 UNIVERSITÀ DEGLI STUDI DI FERRARA 1.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Scoprirete che su Office non si può solo contare ma anche sviluppare.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
LE SAI LE TABELLINE? Mettiti alla prova!.
RILEVAZIONE DEI LIVELLI DI COMPETENZA MATEMATICA ANNO SCOLASTICO 2007/2008 BY PROCIDA.
1 Questionario di soddisfazione del servizio scolastico Anno scolastico 2011/2012 Istogramma- risposte famiglie.
Un trucchetto di Moltiplicazione per il calcolo mentale
Navigazione piana, introduzione pns pnr.
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
Prima rilevazione sullo stato di attuazione della riforma degli ordinamenti nelle istituzioni scolastiche in LOMBARDIA Attuazione del D.L. 59/2003 a.s.
Esempi risolti mediante immagini (e con excel)
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
-17 Aspettative economiche – Europa Settembre 2013 Indicatore > +20 Indicatore 0 a +20 Indicatore 0 a -20 Indicatore < -20 Unione Europea Totale: +6 Indicatore.
Collection & Generics in Java
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
I chicchi di riso e la sfida al Bramino
Un’analisi dei dati del triennio
Mercato del lavoro e condizione giovanile: la crisi si acuisce
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Il numero più grande Accademia dei Lincei
LEIS03100A - ITALIANO _ Rilevazioni Nazionali Elaborazione a cura di: Marcello Pedone IISS” A. DE PACE” LECCE LEIS03100A - Rilevazioni Nazionali.
1 Ministero dell’Istruzione, dell’Università e della Ricerca Dipartimento per la Programmazione e la Gestione delle risorse umane, finanziarie e strumentali.
Indagine Congiunturale 2011 Confcooperative Emilia Romagna CONFERENZA STAMPA CONFCOOPERATIVE EMILIA ROMAGNA Bologna, 30 Luglio 2013.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Transcript della presentazione:

1 / 70 ADO.NET, i Data Provider e l'architettura connessa Silvano Coriani Developer & Platform Evangelism MCTrainer MCSDeveloper MCADeveloper MCSEInternet MCDBA

2 / 70 Da dove iniziare...

3 / 70 Agenda

4 / 70.NET Data Access Overview

5 / 70.NET Application ODBC OLE DB Other DBMS Non-relationalsources OLE DB Provider SQL Server System.Data.SqlClientSystem.Data.OleDbSystem.Data.Oracle Oracle DataSet System.Data.Odbc

6 / 70.NET Data Provider System.Data

7 / 70.NET Data Provider connessaCommand

8 / 70.NET Data Provider DataAdapter DataReader

9 / 70 ADO.NET e SQL Server 2000

10 / 70 SqlClient.NET Data Provider

11 / 70 SqlClient Managed Provider Non utilizza direttamente i cursori server di SQL Server –Nel caso, occorrono comandi T-SQL espliciti (OPEN CURSOR, sp_cursor, sp_executesql ecc.) –Oppure utilizzare ADO 2.x attraverso COM Interop Permette di interagire con le funzionalità XML di SQL Server 2000 –ExecuteXmlReader()

12 / 70 SqlClient.NET Data Provider Object Model SqlConnection SqlCommand SqlParameterCollectionSqlDataReader SqlParameter System.Xml.XmlReader Object

13 / 70 SqlClient e il CLR Common Language Runtime SqlServer SqlClient TDSParser

14 / 70 Accesso ai dati nel database server

15 / 70 Query ad-hoc

16 / 70 Prepare / Execute PreparedSqlCommandPreparedSqlCommand

17 / 70 sp_executesql Alternativa valida alle stored procedureAlternativa valida alle stored procedure –Elimina la gestione lato server Se si vuole ottenere il riutilizzo del piano di esecuzione, anche qui occorre definire correttamente I parametri con il relativo tipoSe si vuole ottenere il riutilizzo del piano di esecuzione, anche qui occorre definire correttamente I parametri con il relativo tipo Eseguita in modalità RPCEseguita in modalità RPC –Più efficiente nellesecuzione sul server –Riutilizzo del piano di esecuzione della query exec sp_executesql NInsert T1 Values float,1 exec sp_executesql NInsert T1 Values float,1

18 / 70 Stored Procedure WITH RECOMPILEWITH RECOMPILE

19 / 70 Stored Procedure SqlCommandCommandTypeSqlCommandCommandType –Definizione di tutti i parametri tipizzati utilizzati dalla stored procedure –MAI

20 / 70 Classica Stored Procedure CREATE PROC int OUTPUT AS -- Validazione di parametri di input Logica applicativa (eventualmente chiama altre SP) Restituzione di uno o più result set Restituisco il valore di ritorno

21 / 70 Stored Procedure FOR XML CREATE PROC int OUTPUT AS -- Validazione di parametri di input Logica applicativa (eventualmente chiama altre SP) Restituzione di uno o più result set SELECTC.CustomerID,O.OrderID,O.OrderDateFROM Customer C Left Join Orders O ON C.CustomerID=O.CustomerID WHERE C.CustomerID FOR XML AUTO, ELEMENTS –- o EXPLICIT -- Restituisco il valore di ritorno

22 / 70 Posso passare un set di record ad una SP? CREATE PROC varchar(1024) AS -- Carico il doc XML nel DOM RecordSetXML -- Eseguo un inserimento in una tabella filtrando -- le informazioni che mi servono attraverso XPath WITH (CustomerID varchar(5) CompanyName -- Rimuovo il documento dalla memoria sp_xml_removedocument

23 / 70 SQL Server 2000 Best Practices

24 / 70 Cursori row-basedrow-based –set

25 / 70 SqlConnection IDbConnectionIDbConnection ConnectionStringSqlCommandSqlDataReaderConnectionStringSqlCommandSqlDataReader –Close()Dispose() BeginTransactionBeginTransaction –SqlTransaction

26 / 70 SqlConnection AttachDBFilenameSqlClientPermissionAttachDBFilenameSqlClientPermission

27 / 70 SqlConnection SqlCommandSqlDataAdapterSqlCommandSqlDataAdapter [Visual Basic] Dim nwindConn As SqlConnection = New SqlConnection("Data _ Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind") nwindConn.Open()[C#] SqlConnection nwindConn = new SqlConnection("Data Source=localhost; Integrated Security=SSPI; Initial Catalog=northwind"); nwindConn.Open();

28 / 70 SqlCommand

29 / 70 SqlCommand Implementa linterfaccia IDbCommandImplementa linterfaccia IDbCommand –ExecuteReader() Da utilizzare quando è previsto un result set come ritornoDa utilizzare quando è previsto un result set come ritorno –ExecuteScalar() Da utilizzare per aggregazioni o risultati di calcoliDa utilizzare per aggregazioni o risultati di calcoli Ritorna solo la prima colonna della prima riga, gli altri dati vengono persiRitorna solo la prima colonna della prima riga, gli altri dati vengono persi –ExecuteNonQuery() Ottimizzato per query che non ritornano result set ma solo parametri di ritorno o numero di record modificatiOttimizzato per query che non ritornano result set ma solo parametri di ritorno o numero di record modificati –ExecuteXmlReader()

30 / 70 SqlCommand e query libere Dim sqlConn As SQLConnection Dim sqlCmd As SQLCommand Dim rowsAffected As Integer Try ' Creo la connessione sqlConn = New SQLConnection(myConnString) ' Creo il comando sqlCmd = New SQLCommand() ' specifico il tipo di comando With sqlCmd.CommandType = CommandType.Text.CommandText = "Insert Customers (Alias, CustomerName) _ Values ('myAlias','myName')".Connection = sqlConn End With ' apro la connessione sqlConn.Open() ' eseguo il comando, vengono ritornate le righe inserite rowsAffected = sqlCmd.ExecuteNonQuery() Catch e As Exception ' gestisco leccezione … Finally ' chiudo la connesione sqlConn.Close() End Try

31 / 70 SqlCommand e le Stored Procedure ParametersParameters

32 / 70 SqlCommand e le Stored Procedure ExecuteReader()DataReaderExecuteReader()DataReader DBNull.Value per impostare a null un parametro di input di una SPDBNull.Value per impostare a null un parametro di input di una SP CommandBehaviorCommandBehavior

33 / 70 SqlCommand e le Stored Procedure sqlConn = New SQLConnection(myConnString) ' Create a new command object sqlCmd = New SQLCommand() ' Specify the stored procedure and connection With sqlCmd.CommandType = CommandType.StoredProcedure.CommandText = "InsertCustomer".Connection = sqlConn End With ' Define and add a parameter to the parameters collection param = sqlCmd.Parameters.Add(New SQLDBType.NVarChar, 100) With param.Direction = ParameterDirection.Input ' Set the parameter value.Value = xyz" End With ' Add remaining parameters … ' Open the connection sqlConn.Open() ' Execute the command rowsAffected = sqlCmd.ExecuteNonQuery()

34 / 70 SqlDataReader SqlCommandSqlCommand Read()IEnumerableRead()IEnumerable

35 / 70 SqlDataReader IDataReaderIDataRecordIDataReaderIDataRecord –Per accesso a informazioni in formato rettangolare e non È possibile accedere ai dati nelle singole colonne per indicenome del campo o attraverso metodo accessori dedicati ai tipi di dato contenutiÈ possibile accedere ai dati nelle singole colonne per indicenome del campo o attraverso metodo accessori dedicati ai tipi di dato contenuti –GetDateTime()GetDouble()GetGuid(), GetInt32()

36 / 70 SqlDataReader NextResult()NextResult() La struttura del result set è descritta attraverso una schema tableLa struttura del result set è descritta attraverso una schema table –GetSchemaTable()

37 / 70 Utilizzo di SqlDataReader [Visual Basic] Dim myReader As SqlDataReader = myCommand.ExecuteReader() Do While myReader.Read() Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0), myReader.GetString(1)) Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0), myReader.GetString(1))LoopmyReader.Close()[C#] SqlDataReader myReader = myCommand.ExecuteReader(); while (myReader.Read()) Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1)); Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1));myReader.Close();

38 / 70 XmlReader ExecuteXmlReader() FOR XMLExecuteXmlReader() FOR XML [Visual Basic] Dim custCMD As SqlCommand = New SqlCommand("SELECT * FROM Customers FOR XML _ AUTO, ELEMENTS", nwindConn) Dim myXR As System.Xml.XmlReader = custCMD.ExecuteXmlReader() [C#] SqlCommand custCMD = new SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn); System.Xml.XmlReader myXR = custCMD.ExecuteXmlReader();

39 / 70 Operazioni di Data Definition Language ExecuteNonQuery()ExecuteNonQuery()

40 / 70 Transazioni in ADO.NET Transazioni localiTransazioni locali –Allinterno del codice SQL delle Stored Procedure BEGIN/COMMIT TRANBEGIN/COMMIT TRAN –SqlOleDbTransaction

41 / 70 Transazioni in ADO.NET [C#] SqlConnection conn = new SqlConnection(); conn.Open("..."); SqlTransaction tx = conn.BeginTransaction(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "..."; cmd.Transaction = tx; cmd.ExecuteNonQuery(); tx.Commit(); [VB.NET] OleDbConnection conn = new OleDbConnection(); conn.Open("..."); OleDbTransaction tx = conn.BeginTransaction(); OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = "..."; cmd.Transaction = tx; cmd.ExecuteNonQuery(); tx.Commit();

42 / 70 Error & Info handling Errori durante lesecuzione di operazioni sulla fonte dati vengono intercettati attraverso le eccezioniErrori durante lesecuzione di operazioni sulla fonte dati vengono intercettati attraverso le eccezioni Ogni Managed providers implementa le proprie eccezioniOgni Managed providers implementa le proprie eccezioni –SqlException SqlErrorSqlError

43 / 70 Error & Info handling SqlInfoMessageEventHandlerInfoMessa geSqlInfoMessageEventHandlerInfoMessa ge

44 / 70 Error & Info handling public static int Main(string[] args) { try { SqlConnection conn = new SqlConnection(ConnectionString); // Associo un event handler allevento di InfoMessage conn.InfoMessage += new SqlInfoMessageEventHandler(myHandler); conn.Open(); } catch (SqlException e) { for (int i=0; i < e.Errors.Count; i++) { Console.WriteLine("Index #" + i + "\n Error: " + e.Errors[i].ToString() + "\n"); } catch (Exception e) { Console.WriteLine(e.Message); } finally { conn.Close(); } return 0; }

45 / 70 Error & Info handling public static void myHandler(object conn, SqlInfoMessageEventArgs e) { Console.WriteLine("caught a SQL warning"); for (int i=0; i < e.Errors.Count; i++) { Console.WriteLine("Index#" + i + "\n" + "Warning:" + e.Errors[i].ToString() + "\n"); }

46 / 70 Considerazioni sulle performance Dispose()DataReaderDispose()DataReader

47 / 70 Considerazioni sulle performance FOR XMLXmlReaderFOR XMLXmlReader

48 / 70 Considerazioni sulle performance Tenere sempre presente il tipo di comando e di valori di ritornoTenere sempre presente il tipo di comando e di valori di ritorno –Singola entità letta per chiave primaria Stored Procedure con parametri di ritornoStored Procedure con parametri di ritorno –Valore scalare ExecuteScalar()ExecuteScalar() –DataReader

49 / 70 Codice portabile tra più Data Provider

50 / 70 Integrare applicazioni.NET con altri database server

51 / 70 OleDb Managed Provider

52 / 70 OleDb Managed Provider Common Language Runtime Data Source Relazionale e non OleDbManagedProvider ProviderOLEDB

53 / 70 OLEDB Managed Provider Object Model OleDbConnection OleDbCommand OleDbParameterCollectionOleDbDataReader.Connection.OleDbParameter.CreateCommand.Parameters.Item.Add.CreateParameter.ExecuteReader Object.Item

54 / 70 OleDbConnection [Visual Basic] Dim myConnection As String = "Provider=SQLOLEDB;Data Source=localhost;Initial _ Catalog=Northwind;Integrated Security=SSPI;" Dim myConn As New OleDbConnection(myConnection) myConn.Open() [C#] String myConnection = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;"; OleDbConnection myConn = new OleDbConnection(myConnection); myConn.Open();

55 / 70 OleDbCommand public void ReadMyData(string myConnString) { string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; OleDbConnection myConnection = new OleDbConnection(myConnString); OleDbConnection myConnection = new OleDbConnection(myConnString); OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection); OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection); myConnection.Open(); myConnection.Open(); OleDbDataReader myReader = myCommand.ExecuteReader(); OleDbDataReader myReader = myCommand.ExecuteReader(); try try { while (myReader.Read()) while (myReader.Read()) {Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));} {Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));} } finally finally { // da chiudere sempre dopo aver terminato la lettura // da chiudere sempre dopo aver terminato la lettura myReader.Close(); myReader.Close(); // da chiudere sempre dopo aver terminato la lettura // da chiudere sempre dopo aver terminato la lettura myConnection.Close();} myConnection.Close();}}

56 / 70 ODBC Managed Provider

57 / 70 ODBC Managed Provider Common Language Runtime Data Source Relazionale OdbcManagedProvider DriverODBC

58 / 70 ODBC Managed Provider Object Model OdbcConnection OdbcCommand OdbcParameterCollectionOdbcDataReader.Connection OdbcParameter.CreateCommand.Parameters.Item.Add.CreateParameter.ExecuteReader Object.Item

59 / 70 OleDbDataReader ExecuteReader()ExecuteReader()

60 / 70 Utilizzo di OleDbDataReader Public Sub ReadMyData(myConnString As String) Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders" Dim myConnection As New OleDbConnection(myConnString) Dim myCommand As New OleDbCommand(mySelectQuery, myConnection) myConnection.Open() Dim myReader As OleDbDataReader myReader = myCommand.ExecuteReader() ' La chiamata a Read posiziona sul primo record While myReader.Read() Console.WriteLine(myReader.GetInt32(0).ToString() + ", " _ + myReader.GetString(1)) End While ' chiudere il reader myReader.Close() ' chiudere la connessione myConnection.Close() End Sub

61 / 70 DB2 e ADO.NET ODBC.Net Data Provider OdbcConnection OdbcCommand OdbcDataAdapter OdbcDataReader OLE DB.Net Data Provider OleDbConnection OleDbCommand OleDbAdapter OleDbDataReader DB2.Net Data Provider DB2Connection DB2Command DB2DataAdapter DB2DataReader IBM DB2 ODBC Driver IBM DB2 OLE DB Provider ApplicationSystem.Data.OleDbApplicationMicrosft.Data.ODBCApplicationIBM.Data.DB2 DB2

62 / 70 DB2Connection Object

63 / 70 DB2Command Object

64 / 70 DB2DataReader Object

65 / 70 Oracle e.NET Microsoft.NET Data Provider per Oracle –Prodotto da Microsoft –Usa gli strumenti client di Oracle Oracle Data Provider per.NET (ODP.NET) –Sviluppato da Oracle –Integrazione completa –Espone tutte le caratteristiche di un Oracle DB Oracle Connect per.NET

66 / 70.NET Data Providers

67 / 70 ODP.NET DataSet Oracle DataAdapter Oracle Transaction Oracle Command Oracle Connection Oracle DataReader OracleCommand Builder

68 / 70 ODP.NET

69 / 70 In Sintesi

70 / 70 Link utili

71 / 70 News

72 / 70