Vous êtes sur la page 1sur 24

26/02/2013

Unidad 6.- Acceso a datos desde C# .NET


Autor: Dr. Ramn Roque Hernndez http://ramonroque.com/Materias/POOTec.htm ramonroque@yahoo.com Colaborador: n!. "runo #pez Ta$eyas% M.&. '''.itnue(o)aredo.edu.m*/ta$eyas ta$eyas@itnue(o)aredo.edu.m*

Arquitectura Programas - Datos

26/02/2013

ADO.NET (ActiveX Data Objects .NET)


&omponente de )a p)ata+orma .,-T que permite acceder a datos desde un pro!rama -s un con.unto de c)ases% inter+aces% estructuras y enumeraciones que permiten tra/a.ar de manera conectada o desconectada con )os datos 0DO.,-T puede ser uti)izado desde cua)quier )en!ua.e .,-T 0DO.,-T es )a nue(a (ersin de 0DO% creada tota)mente a partir de cero.

Las clases de ADO.NET


0DO.,-T es un con.unto de c)ases pertenecientes a) espacio de nom/res System.Data:
System.Data System.Data.Common System.Data.OleDB System.Data.SqlClient

&on.unto de componentes para crear distri/uidas de uso compartido de datos.

ap)icaciones

#os componentes estn dise1ados para separar e) acceso a )os datos de )a manipu)acin de )os mismos.

26/02/2013

Arquitectura rame!or" .NET

Evoluci#$ %ist#rica
ODBC 2Open Data"ase &onnecti(ity3
nteroperati/i)idad con amp)io ran!o de 45"D 0P acceso amp)iamente aceptada 6sa 47# como )en!ua.e de acceso de datos

DAO 2Data 0ccess O/.ects3


nter+ase de pro!ramacin para /ases de datos 8-T/ 40M 2p. e.em. 0ccess3

26/02/2013

Evoluci#$ %ist#rica
RDO 2Remote Data O/.ects3
-strechamente )i!ado a OD"& Orientada a ap)icaciones c)iente/ser(idor

OLE DB 2O/.ect #in$in! and -m/eddin! +or Data/ases3


,o restrin!ido a acceso de datos re)aciona)es ,o )imitado a 47# como )en!ua.e de recuperacin de datos Tecno)o!9a desarro))ada por Microso+t &onstruido so/re &OM 2&omponent O/.ect Mode)3 Proporciona una inter+ase a /a.o ni(e) en &::

Evoluci#$ %ist#rica
ADO 20cti(e; Data O/.ects3
O+rece una inter+ase orientada a o/.etos Proporciona un mode)o de pro!ramacin para O#- D" accesi/)e desde )en!ua.es di+erentes a &:: Dise1ado como mode)o conectado% a)tamente acop)ado ndicado para arquitecturas c)iente/ser(idor

26/02/2013

Proveedores de acceso a datos

Proveedores de acceso a datos


&on.unto de c)ases que imp)ementan una serie de inter+aces comunes ADO.NET OLE DB
0cceso (9a protoco)o O#- D" a cua)quier +uente de datos que )o soporte System.Data.OleDb

ODBC
0cceso (9a protoco)o OD"& a cua)quier +uente de datos que )o soporte System.Data.Odbc

SQL Server
0cceso nati(o a M4 47# 4er(er <.= superior y M4 0ccess System.Data.SqlClient

Oracle
0cceso nati(o a Orac)e 4er(er System.Data.OracleClient

Otros provistos por terceros


My47#% Post!ree47#% D">% etc.

26/02/2013

Proveedores de acceso a datos

&om'o$e$tes de ADO.NET
Connection 2cone*in3 Command 2rdenes3 DataReader 2)ector de datos3 DataAdapter 2adaptador de datos3

26/02/2013

Datos co$ectados

Objetos del modelo co$ectado


Connection 2cone*in3
Representa una cone*in a )a "D Permite a/rir y cerrar )a cone*in a )a "D

Command 2comando3
Representa una (9a para representar sentencias 47# a )a "D -.emp)o: 4e)ect% nsert% De)ete% 6pdate

DataReader 2)ector de datos3


0)mac?n tempora) de datos% de s)o )ectura y s)o hacia ade)ante

26/02/2013

(odelo co$ectado

Datos desco$ectados

26/02/2013

Objetos del modelo desco$ectado


DataAdapter 2adaptador de datos3
&onecta e) pro!rama con )a "D% rea)iza consu)tas% ))ena )os Data4et y sincroniza )os cam/ios en )a "D -s un mediador entre e) Data4et y )a "D

DataSet 2con.unto de datos3


-s una estructura para a)macenar datos -s una @copia en memoria )oca)A de una porcin de )a "D 4e encuentra en )a memoria de) c)iente &ompati/)e con )as "D re)aciona)es 2a)macena datos en +orma de ta/)as3

(odelo desco$ectado

26/02/2013

ADO.NET
,o depende de cone*iones continuamente acti(as% esto es% )as ap)icaciones se conectan a )a "D s)o durante e) tiempo necesario para consu)tar o actua)izar datos. #as interacciones con )a "D se rea)izan mediante rdenes para acceso a )os datos. #os datos requeridos norma)mente se a)macenan en memoria cach? en con.unto de datos% )o que permite tra/a.ar sin cone*in so/re una copia tempora) de )os datos.

X(L
-n 0DO.,-T% e) +ormato de trans+erencia es ;M#. #a representacin de datos ;M# no uti)iza in+ormacin /inaria% sino se /asa en te*to. Muchos ser(idores /)oquean )a in+ormacin /inaria. &uando se mane.an datos en +ormato de te*to% se pueden en(iar mediante cua)quier protoco)o% como HTTP.

10

26/02/2013

ADO.NET ) X(L

11

26/02/2013

Arquitectura

12

26/02/2013

*+L (*tructured +uer) La$guage)


B.

#en!ua.e que permite manipu)ar datos mediante e) DM# 2Data Manipu)ation #an!ua!e3:
O/tener datos a)macenados en )as ta/)as nsertar% /orrar o actua)izar datos de )as ta/)as

>. De+inir e)ementos mediante e) DD# 2Data De+inition #an!ua!e3: &rear% /orrar% modi+icar ta/)as% re)aciones% restricciones% etc.

*e$te$cias de *+L
Permiten consu)tar datos de )as ta/)as. T9picamente consisten de C partes: SELECT D,om/res de )os camposE RO! D,om/re de )a2s3 ta/)a2s3E "#ERE D&ondicin2es3 de +i)trado de datosE

13

26/02/2013

Ejem'lo de *+L

14

26/02/2013

,ideos co$sultas *+L


&onsu)tas simp)es 47# F #a sentencia 4-#-&T 2http://'''.youtu/e.com/'atchG(H /a+cdsRBI0J+eat ureHre)ated3 &onsu)tas simp)es 47# F #a c)ausu)a KH-R2http://'''.youtu/e.com/'atchG(Hhta.,L'MNI$J+e atureHre)ated3

El objeto &o$$ectio$
Para conectarse a una "D% 0DO.,-T proporciona e) o/.eto Connection. M?todos ms usados: Open().F 0/re )a cone*in. Requiere una cadena de tipo string que descri/a:
-) tipo de )a "D #a u/icacin 0utenticacin 2si requiere3

Close().F &ierra )a cone*in pre(iamente a/ierta.

15

26/02/2013

&o$$ectio$
Tipo de base de datos 47# 4er(er O#- D" OD"& Orac)e
Ejem'lousing System.Data.OleDb;
OledbConnection Conexin = new OleDbConnection(CadenaConexin);

Ob$eto Connection SqlConnection OleDbConnection OdbcConnection OracleConnection

&rear u$a .D e$ (icroso/t Access


&rear )a BDAlumnos.accdb en Microso+t 0ccess y )a ta/)a TablaAlumnos con )os si!uientes campos:
Campo ,o&tr) ,om/re 4emestre Promedio Tipo Te*to2L3 Te*to ,Omero 2entero3 ,Omero 2rea) con > decima)es3

ns?rte)e a)!unos re!istros

16

26/02/2013

Ejem'lo de u$a co$e0i#$ co$ u$a .D de (icroso/t Access


using System.Data.OleDb; // Para uso de la base de datos en Access private OleDbConnection Conexion; // Declaracin de la conexin // Declaracin de la cadena de conexin string CadenaConexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\DATOS\BDAlumnos.accdb";
Conexion = new OleDbConnection(CadenaConexion);

El objeto &oma$d
Despu?s de esta/)ecer )a cone*in con )a "D% se usa e) o/.eto Command para e.ecutar sentencias 47# y de(o)(er )os resu)tados. OleDbCommand.F Datos compati/)es con O)eD/ OdbcCommand.F Datos compati/)es con Od/c SqlCommand.F Datos compati/)es con 47# 4er(er OracleCommand.F Datos compati/)es con Orac)e -.emp)o: OleDbCommand Comando = new OleDbCommand(SELECT NoCtrl, Nombre FROM TablaAlumnos WHERE Semestre=8,Conexin);

17

26/02/2013

Ejem'lo de uso del objeto &omma$d


// Declaracin de la consulta string Consulta = "SELECT * FROM TablaAlu nos"! // Declaracin del co ando de consulta en la cone"in con la #D Co ando = ne$ OleDbCo and%Consulta& Cone"ion'!

El objeto Data1eader
4e usa so)amente para )eer datos de una "D. OleDbDataReader.F Datos compati/)es con O)eD/ SqlDataReader.F Datos compati/)es con 47# 4er(er

18

26/02/2013

Ejem'lo de uso del Data1eader


// Abrir la #D Cone"ion(O)en%'! // E*ecutar el co ando OleDbDataReader Lector = Co ando(E"ecuteReader%'! $+ile %Lector(Read%'' , Console(-riteLine%Lector(.etString%/' 0 " " 0 Lector(.etString%1'0" "0Lector(.et2alue%3'(ToString%''! 4 // Cerrar la lectura Lector(Close%'! Lector = null!

class #aseDatosAlu nos , )ri5ate OleDbConnection Cone"ion! // Declaracin de la cone"in con la #D )ri5ate OleDbCo and Co ando! // Declaracin del co ando con sentencias S6L )ri5ate OleDbDataReader Lector! // Declaracin del lector de datos )ublic 5oid LeerDe#aseDeDatos%' , // Declaracin de la cadena de cone"in string CadenaCone"ion = 7"8ro5ider=Microso9t(ACE(OLED#(13(/! Data Source=.:;DATOS;ta<e=as;A)untes;8OO;8rogra as;/>(? #ases de datos;#D;#DAlu nos(accdb"! Cone"ion = ne$ OleDbConnection%CadenaCone"ion'! // Crear la cone"in con la #D string Consulta = "SELECT * FROM TablaAlu nos"! Co ando = ne$ OleDbCo and%Consulta& Cone"ion'! // Declaracin de la consulta // Declaracin del co ando de consulta en la cone"in con la #D

Cone"ion(O)en%'! // Abrir la #D Lector = Co ando(E"ecuteReader%'! // E*ecutar el co ando lector de datos $+ile %Lector(Read%'' , Console(-riteLine%Lector(.etString%/' 0 " " 0 Lector(.etString%1'0" "0Lector(.et2alue%3'(ToString%''! 4 Lector(Close%'! // Cerrar el lector de datos Lector = null! 4 )ublic 5oid CerrarCone"ion%' , // 2eri9ica si est@ acti5a la lectura i9 %Lector A= null' Lector(Close%'! // 2eri9ica si est@ abierta la cone"in con la #D i9 %Cone"ion A= null' Cone"ion(Close%'! 4 4

19

26/02/2013

El ada'tador de datos
&on.unto de o/.etos usado para intercam/iar datos entre una "D y un con.unto de datos 2Data4et3. #ee datos de una "D y )os co)oca en un Data4et para manipu)ar)os. -scri/e en )a "D )os datos modi+icados de) Data4et OleDbDataAdapter.F Datos compati/)es con O)eD/ OdbcDataAdapter.F Datos compati/)es con Od/c SqlDataAdapter.F Datos compati/)es con 47# 4er(er OracleDataAdapter.F Datos compati/)es con Orac)e 4e crea un adaptador por cada ta/)a e*istente en )a "D

&#mo crear el ada'tador de datos


DataSet
DataTable Leer Actualizar

DataAdapter

Fuente de datos

DataTable Leer

DataAdapter

Actualizar

20

26/02/2013

Ada'tador de datos

&#mo actuali2ar u$a .D e$ ADO.NET


Cliente DataSet Leer Datos Actualizar DataTable DataAdapter
Base de datos

Servidor

Datos

InsertCommand UpdateCommand DeleteCommand

21

26/02/2013

&#mo crear u$ registro e$ la .D


&rear un nue(o re!istro que coincida con e) esquema de )a ta/)a
DataRow miRegistro = dataTable.NewRow();
miRegistro[NoCtrl] = txtNoCtrl.Text; if(radioButton1.Checked) miRegistro[Sexo]=radioButton1.Text; else miRegistro[Sexo]=radioButton2.Text;

0!re!ar e) nue(o re!istro a) Data4et


dataTable.Rows.Add( miRegistro );

0ctua)izar )a /ase de datos


sqlDataAdapter1.Update( dataSet );

&#mo borrar u$ registro de la .D


"orrar e) re!istro de) dataset
dataTable.Rows[0 .Delete();

0ctua)izar )a "D
dataAdapter.Update(dataSet);

0ceptar )os cam/ios en e) dataset


dataSet.A!!ept"#a$ges();

22

26/02/2013

Pasos 'ara i$sertar datos e$ la .D (modo co$ectado)

23

26/02/2013

,ideos .D e$ &3
&onectar &P y una /ase de datos tutoria) 2http://'''.youtu/e.com/'atchG(HQPhLLoRschM3 &onectando &P con 0ccess 2http://'''.youtu/e.com/'atchG(H,KHD<dnTBn'J+eatureHr e)ated3 &one*in 0ccessFQisua) 4tudio &P 2http://'''.youtu/e.com/'atchG(H&),LI4hhTD-J+eatureHre) ated3 &P and Microso+t 0ccess Data/ase F Part B 2http://'''.youtu/e.com/'atchG(Hso)rzatPmP0J+eatureHre)at ed3 &P and Microso+t 0ccess Data/ase F Part > 2http://'''.youtu/e.com/'atchG(Hc&zStQ<cTC7J+eatureHre) m+u3

1e/ere$cias bibliogr4/icas
http://mara(i))osomundode)ain+ormatica./)o!spot.m* />=B=/=U/accesoFdatosFconFadonet.htm) http://'''.codepro.ect.com/0rtic)es/ST<</6sin!F 0DOF,-TF+orF/e!inners http://'''.+ree'e/s.com/+ree(/dotnet/resources/M4 D,V>=Trainin!V>=FV>=04P.,-TV>=F V>=Modu)eV>=CW6sin!V>=Microso+tV>=0DO.,-TV >=toV>=0ccessV>=Data.pd+ http://'''.so+t'areresearch.net/+i)eadmin/src/docs/ teachin!/K4=T/Prod/=U.0DO.,-T.pd+

24

Vous aimerez peut-être aussi