introducción a ado.net y sql server 2000 erich bühler mvp

35
Introducción a ADO.NET y Introducción a ADO.NET y SQL Server 2000 SQL Server 2000 Erich Bühler Erich Bühler MVP MVP

Upload: visitacion-ariza

Post on 03-Jan-2015

11 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Introducción a ADO.NET y Introducción a ADO.NET y SQL Server 2000 SQL Server 2000

Erich BühlerErich BühlerMVPMVP

Page 2: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

¿Qué es SQL Server?¿Qué es SQL Server?TareasTareas

Gestiona datos para transacciones y análisisGestiona datos para transacciones y análisis Transacciones: OLTPTransacciones: OLTP Análisis: OLAPAnálisis: OLAP

Atiende a peticiones de clientesAtiende a peticiones de clientes

SQL ServerCliente

ResultadoResultadoResultadoResultado

OLAPOLAP

OLTPOLTPPeticiónPeticiónPeticiónPetición

Page 3: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Herramientas SQL ServerHerramientas SQL ServerConsola administrativaConsola administrativa

Consola administrativa de SQL ServerConsola administrativa de SQL Server Centraliza toda la administraciónCentraliza toda la administración

Tareas comunes:Tareas comunes: Configuración de SQL ServerConfiguración de SQL Server SeguridadSeguridad Creación y diseño de base de datosCreación y diseño de base de datos Actividades de mantenimientoActividades de mantenimiento

Backup, exportación, monitorización, log…Backup, exportación, monitorización, log…

Page 4: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

¿Qué es SQL Server?¿Qué es SQL Server?Servicios de SQL ServerServicios de SQL Server

Microsoft DistributedTransaction CoordinatorMicrosoft DistributedTransaction Coordinator

ServicioMSSQLServer ServicioMSSQLServer

ServicioSQLServerAgent ServicioSQLServerAgent

Microsoft SearchMicrosoft Search

Gestión de datosProceso de sentenciasIntegridad de datos

TrabajosAlertasOperadores

Catálogos Full-TextIndices Full-Text

Gestión de transacciones distribuidas

SQL Server

Page 5: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Estructura de una base de datosEstructura de una base de datosArchivosArchivos

Tablas, índicesTablas, índices

DatosDatos

DatabaseDatabaseDatabaseDatabase

Fichero de datosFichero de datos.mdf o .ndf.mdf o .ndf

Fichero de datosFichero de datos.mdf o .ndf.mdf o .ndf

Fichero de logFichero de log.ldf.ldf

Fichero de logFichero de log.ldf.ldf

Page 6: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Estructura de una base de datosEstructura de una base de datosTransaccionesTransacciones

La aplicación envía una La aplicación envía una modificaciónmodificación

La aplicación envía una La aplicación envía una modificaciónmodificación

1111

Archivo logArchivo log

La modificación es guardada La modificación es guardada en el logen el log

La modificación es guardada La modificación es guardada en el logen el log

3333

Se cargan las páginas en Se cargan las páginas en memoria y se modificanmemoria y se modifican

Se cargan las páginas en Se cargan las páginas en memoria y se modificanmemoria y se modifican

2222

Cache y búferCache y búfer

Archivo de datosArchivo de datos

Un checkpoint Un checkpoint escribe las páginas escribe las páginas de memoria a discode memoria a disco

Un checkpoint Un checkpoint escribe las páginas escribe las páginas de memoria a discode memoria a disco

4444

Page 7: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Estructura de una base de datosEstructura de una base de datosTipos y tablasTipos y tablas

TablasTablas Formadas por columnas con tipoFormadas por columnas con tipo Las columnas pueden ser funciones SQLLas columnas pueden ser funciones SQL

Multitud de tipos por defectoMultitud de tipos por defecto int, decimal, money, datetime, nvarchar, ntext, int, decimal, money, datetime, nvarchar, ntext,

image…image… Permite añadir los propiosPermite añadir los propios

OrderIDOrderID ClienteIDClienteID FechaFecha PrecioPrecio PrecioConTasasPrecioConTasas FotoFoto

intint nchar imagedatetime money Precio*0,16

Page 8: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Estructura de una base de datosEstructura de una base de datosIntegridad de datosIntegridad de datos

De columnaDe columna Valor por defecto, valores admitidosValor por defecto, valores admitidos

De entidadDe entidad Clave primariaClave primaria UniqueUnique

ReferencialReferencial Clave foráneaClave foránea Comprobación de fórmulaComprobación de fórmula

Page 9: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Estructura de una base de datosEstructura de una base de datosÍndicesÍndices

Aceleran las consultasAceleran las consultas Formados por una o varias columnasFormados por una o varias columnas Automatizados con Index Tuning WizardAutomatizados con Index Tuning Wizard

AkhtarAkhtar ......BarrBarr ......ConCon ......FunkFunk ......FunkFunk ......…… ......

GanioGanio ......HallHall ......JoneJone ......JonesJones ......JonesJones ......…… ......

SmithSmith ......SmithSmith ......SmithSmith ......WhiteWhite ......WhiteWhite ......…… ......

MartinMartin ......MartinMartin ......OtaOta ......PhuaPhua ......RuddRudd ......…… ......

Akhtar…

MartinAkhtarGanio

MartinSmith

Page 10: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Programación de SQL ServerProgramación de SQL ServerEjecución de sentencias SQLEjecución de sentencias SQL

Lenguaje Transact-SQLLenguaje Transact-SQL

Tres cometidosTres cometidos Manipulación de datosManipulación de datos

SELECT, INSERT, UPDATE, DELETESELECT, INSERT, UPDATE, DELETE

Definición de datosDefinición de datos CREATE, ALTER, DROPCREATE, ALTER, DROP

Control de datosControl de datos GRANT, DENY, REVOKEGRANT, DENY, REVOKE

Page 11: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Selección de datosSelección de datos

Page 12: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Programación de SQL ServerProgramación de SQL ServerEjecución de sentencias SQL (II)Ejecución de sentencias SQL (II)

OperadoresOperadores =, <, <>, AND, NOT…=, <, <>, AND, NOT…

FuncionesFunciones AVG, SUM, DB_NAME…AVG, SUM, DB_NAME…

Control de flujoControl de flujo IF, ELSE; WHILE…IF, ELSE; WHILE…

Unión de tablasUnión de tablas JOIN, UNION…JOIN, UNION…

Page 13: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Programación de SQL ServerProgramación de SQL ServerProcedimientos almacenadosProcedimientos almacenados

Sentencias T-SQL almacenadas en servidorSentencias T-SQL almacenadas en servidor Aceptan parámetros de entrada / salidaAceptan parámetros de entrada / salida VentajasVentajas

Lógica ejecutada en servidorLógica ejecutada en servidor Evita movimiento de datosEvita movimiento de datos

PrecompiladasPrecompiladas

SELECT * FROM Orders WHERERequiredDate < GETDATE() ANDShippedDate IS Null

Page 14: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Programación de SQL ServerProgramación de SQL ServerDesencadenadores (Triggers)Desencadenadores (Triggers)

Procedimiento almacenado enlazado a la Procedimiento almacenado enlazado a la modificación de una tablamodificación de una tabla

Tres tiposTres tipos INSERT, UPDATE, DELETEINSERT, UPDATE, DELETE

Tres posibles accionesTres posibles acciones FOR, AFTER, INSTEAD OFFOR, AFTER, INSTEAD OF

IF (SELECT COUNT(*) FROM Deleted) > 1BEGIN RAISERROR(‘No puede borras más de un registro a la vez’)END

Page 15: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Acceso a datos con ADO.NETAcceso a datos con ADO.NET

Page 16: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Modelo tradicionalModelo tradicionalBase de datosBase de datos

Page 17: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Introducción a ADO.NETIntroducción a ADO.NET

Es una parte integral del frameworkEs una parte integral del framework Último paradigma propuesto por MicrosoftÚltimo paradigma propuesto por Microsoft

Resuelve los siguientes problemasResuelve los siguientes problemas Utiliza XML para el transporte de informaciónUtiliza XML para el transporte de información Se pueden enviar resultados a través de Se pueden enviar resultados a través de

InternetInternet Es posible integrar orígenes XML con facilidad, Es posible integrar orígenes XML con facilidad,

ej. Servicio Web.ej. Servicio Web.

Page 18: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Introducción a ADO.NETIntroducción a ADO.NET El espacio de nombres raíz para ADO.NET El espacio de nombres raíz para ADO.NET

es System.Dataes System.Data Soporte para varias tecnologías (incluso XML)Soporte para varias tecnologías (incluso XML)

SystemSystem

DataData

SQLClientSQLClient

OracleClientOracleClient

OleDBOleDB

OdbcOdbc

Page 19: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Base de datosBase de datos

Page 20: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Básicas del modelo Básicas del modelo desconectadodesconectado Trabajo con infor. en memoria (caché)Trabajo con infor. en memoria (caché) Básicamente se producen 3 etapas:Básicamente se producen 3 etapas:

Se obtiene la información y se desconecta del Se obtiene la información y se desconecta del origenorigen

Se modifica la informaciónSe modifica la información Se conecta nuevamente y concilia con la base Se conecta nuevamente y concilia con la base

de datosde datos

Ahorro de conexiones y mejoras para Ahorro de conexiones y mejoras para aplicaciones distribuidas, pero tener en aplicaciones distribuidas, pero tener en cuenta la concurrencia!! (sqlranger.com)cuenta la concurrencia!! (sqlranger.com)

Page 21: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Básicas del modelo Básicas del modelo desconectadodesconectado El Adaptador es el encargado de efectuar la El Adaptador es el encargado de efectuar la

conexiónconexión Funciona como un ‘enchufe’ entre los datos y Funciona como un ‘enchufe’ entre los datos y

la base de datosla base de datos Contiene la información de conexión y consultaContiene la información de conexión y consulta

Hace transparente la obtención de datos de Hace transparente la obtención de datos de cualquier origen (se encarga a bajo nivel de cualquier origen (se encarga a bajo nivel de la re-conexión)la re-conexión)

Hay uno genérico (OleDbDataAdapter) y Hay uno genérico (OleDbDataAdapter) y uno específico para SQL Server uno específico para SQL Server (SqlDataAdapter)(SqlDataAdapter)

Page 22: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Manipulación de datosManipulación de datos

Espacio System.DataEspacio System.Data Contiene los objetos desconectadosContiene los objetos desconectados

La manipulación se efectúa mediante el La manipulación se efectúa mediante el objeto DataSetobjeto DataSet Caché de datosCaché de datos RelacionalRelacional

Page 23: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Carga del DataSetCarga del DataSet Dim StrConexion As String, StrComandoAutores As StringDim StrConexion As String, StrComandoAutores As String Dim StrComandoEmpleado As String, StrComandoTiendas As StringDim StrComandoEmpleado As String, StrComandoTiendas As String Dim AdEmpleado As OleDbDataAdapter, AdTiendas As OleDbDataAdapterDim AdEmpleado As OleDbDataAdapter, AdTiendas As OleDbDataAdapter Dim AdAutores As OleDbDataAdapter, DS As New DataSetDim AdAutores As OleDbDataAdapter, DS As New DataSet

StrConexion = "Provider=SQLOLEDB.1;User ID=sa;Persist Security Info=False;StrConexion = "Provider=SQLOLEDB.1;User ID=sa;Persist Security Info=False; InitialCatalog=pubs; Data Source=MiServidor" InitialCatalog=pubs; Data Source=MiServidor"

StrComandoAutores = "Select * FROM Authors"StrComandoAutores = "Select * FROM Authors"StrComandoEmpleado = "Select * FROM Employee"StrComandoEmpleado = "Select * FROM Employee"StrComandoTiendas = "Select * FROM Stores"StrComandoTiendas = "Select * FROM Stores"

AdAutores = New OleDb.OleDbDataAdapter(StrComandoAutores, StrConexion)AdAutores = New OleDb.OleDbDataAdapter(StrComandoAutores, StrConexion)AdEmpleado = New OleDbDataAdapter(StrComandoEmpleados, StrConexion)AdEmpleado = New OleDbDataAdapter(StrComandoEmpleados, StrConexion)AdTiendas = New OleDbDataAdapter(StrComandoTiendas, StrConexion)AdTiendas = New OleDbDataAdapter(StrComandoTiendas, StrConexion)……AdAutores.Fill(DS, "Authors")AdAutores.Fill(DS, "Authors")AdEmpleado.Fill(DS, "Employee")AdEmpleado.Fill(DS, "Employee")AdTiendas.Fill(DS, "Stores")AdTiendas.Fill(DS, "Stores")

Page 24: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Manipulación de datosManipulación de datos

Capa de negociosCapa de negocios

Capa deCapa dedatosdatos

Capa de presentaciónCapa de presentación

Web formsWeb forms

Negocio a NegocioNegocio a Negocio

DatasetDataset

DatasetDataset

InternetInternetintranetintranet

DataAdapterDataAdapter

DataAdapterDataAdapterXmlXml

Aplicación.ExeAplicación.Exe

IEIE

DatasetDataset

Windows formsWindows forms

Page 25: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

ADO.NET en el modelo ADO.NET en el modelo desconectadodesconectado

Page 26: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Estructura de la informaciónEstructura de la información El DataSet contiene 3 coleccionesEl DataSet contiene 3 colecciones

DataTableDataTable DataColumnDataColumn DataRowDataRow

En algunos casos se puede utilizar también a En algunos casos se puede utilizar también a DataRelation y ConstraintDataRelation y Constraint

Page 27: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Estructura de la informaciónEstructura de la información

Page 28: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Modificación de datosModificación de datos ConciliaciónConciliación

Se deben tener los 4 comandos en el adaptadorSe deben tener los 4 comandos en el adaptadorPropiedadPropiedad DescripciónDescripción

SelectCommandSelectCommand Almacena la información necesaria para Almacena la información necesaria para obtener las filas de una tabla a cargar en obtener las filas de una tabla a cargar en el DataSet.el DataSet.

UpdateCommandUpdateCommand Almacena la información necesaria para Almacena la información necesaria para llevar acabo una modificación sobre llevar acabo una modificación sobre una fila del origen.una fila del origen.

InsertCommandInsertCommand Almacena la información necesaria para Almacena la información necesaria para agregar una fila al origen. agregar una fila al origen.

DeleteCommandDeleteCommand Almacena la información necesaria para Almacena la información necesaria para eliminar una fila de la base de datos. eliminar una fila de la base de datos.

Page 29: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Modificación de datosModificación de datos

Page 30: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Modificación de datosModificación de datos

Para sincronizar con el origen, se debe Para sincronizar con el origen, se debe invocar al método Update del Adaptadorinvocar al método Update del Adaptador

AdaptadorTiendas.Update(DS, "Stores")AdaptadorTiendas.Update(DS, "Stores")

Por último cambiar el estado de las filasPor último cambiar el estado de las filasDS.Tables("Stores").AcceptChanges()DS.Tables("Stores").AcceptChanges()

Private Sub Conciliar_Click(...Private Sub Conciliar_Click(... 'Envía los cambios de la tabla Stores.'Envía los cambios de la tabla Stores. AdaptadorTiendas.Update(DS, "Stores")AdaptadorTiendas.Update(DS, "Stores") 'Indica que las filas de esta tabla ya han sido 'Indica que las filas de esta tabla ya han sido

enviadas.enviadas. DS.Tables("Stores").AcceptChanges()DS.Tables("Stores").AcceptChanges()End SubEnd Sub

Page 31: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

DataSetDataSet

Es posibleEs posible Indicar relaciones y restricciones entre tablasIndicar relaciones y restricciones entre tablas Crear DS ‘virtuales’Crear DS ‘virtuales’ Exhibir la información jerárquicamenteExhibir la información jerárquicamente

Page 32: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

DataSetDataSet

Controlar restricciones, proponer valores por Controlar restricciones, proponer valores por defecto, crear columnas calculadasdefecto, crear columnas calculadas

Leer/Escribir a XML el esquema de la tabla y/o Leer/Escribir a XML el esquema de la tabla y/o informacióninformación WriteXMLWriteXML ReadXMLReadXML

Consumir información XMLConsumir información XML

Page 33: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Crystal Reports y su relación Crystal Reports y su relación con ADO.NETcon ADO.NET Crystal puede consumir información trabajando Crystal puede consumir información trabajando

bajo el modelo conectado o desconectadobajo el modelo conectado o desconectado Se conoce en Crystal como el modelo PushSe conoce en Crystal como el modelo Push

Page 34: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

Resumiendo…Resumiendo…

ADOADO ADO.NETADO.NETUtiliza RecordsetUtiliza Recordset Utiliza DataSetUtiliza DataSet

Requiere consultas JOINRequiere consultas JOIN Se utilizan métodos de Se utilizan métodos de ADO.NET que utilizan ADO.NET que utilizan DataRelationDataRelation

Se comunica a la DB a través Se comunica a la DB a través del Recordset mediante una del Recordset mediante una conexiónconexión

Se comunica a la DB utilizando Se comunica a la DB utilizando el objeto DataAdapterel objeto DataAdapter

Bloqueos activosBloqueos activos No existen los bloqueos, No existen los bloqueos, aunque pueden haber otros aunque pueden haber otros conflictos…conflictos…

Page 35: Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP

© 2004 Erich R. Bühler© 2004 Erich R. Bühler