Introducción a ADO.NET y SQL Server 2000 Erich Bühler MVP.
-
Upload
visitacion-ariza -
Category
Documents
-
view
11 -
download
2
Transcript of 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
¿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
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…
¿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
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
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
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
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
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
…
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
Selección de datosSelección de datos
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…
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
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
Acceso a datos con ADO.NETAcceso a datos con ADO.NET
Modelo tradicionalModelo tradicionalBase de datosBase de datos
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.
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
Base de datosBase de datos
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)
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)
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
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")
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
ADO.NET en el modelo ADO.NET en el modelo desconectadodesconectado
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
Estructura de la informaciónEstructura de la información
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.
Modificación de datosModificación de datos
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
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
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
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
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…
© 2004 Erich R. Bühler© 2004 Erich R. Bühler