Procedimientos almacenados en C#

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

INSTRUCTOR: LI Ramiro Robles Villanueva
Métodos y parámetros.
ALMACENAMIENTO Y OBTENCIÓN DE DATOS CON ADO.NET. ACCEDER A DATOS CON ADO.NET Tres niveles: Tres niveles: El almacenamiento físico de datos. Puede ser.
Acceso a Bases de Datos con Java
Framework de.Net Infraestructura sobre la que se reúne todo un conjunto de lenguajes y servicios que simplifican el desarrollo de aplicaciones Entorno.
Conceptos fundamentales de ADO.NET
Bloques es Aplicación Nombre: Rodrigo Traverso
Implementación de procedimientos almacenados
Procedimientos de Almacenado
Uso de variables de tipo referencia
Introducción a Transact-SQL
Acceso a datos con ADO.NET
MGB 2003 Para Desarrolladores
Desarrollo de una Aplicación Web sobre tecnología Microsoft .NET
Especialista en Business Intelligence Integration Services SSIS (Sesión 5) Microsoft SQL Server 2008 R2 (Nov.2013) Suscribase a o.
SQL Server Integration Services SSIS
Acceso a Datos avanzado
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Lenguaje de consulta de Hibernate
ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.
Introducción ADO .Net.
RMI Remote Method Invocation
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
ADO.Net TGP (Tecnología de la Programación)
Oracle, orientado a objetos
Módulo 14 Programación para DBA. TEMARIO Programación y DBAProgramación y DBA.NET Framework.NET Framework Arquitectura ADO.NETArquitectura ADO.NET.NET.
Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
PL/SQL Francisco Moreno Universidad Nacional.
SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC.
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Clase 9 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Acceso a datos con ADO.NET
Tema 6: Clases Antonio J. Sierra.
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
Bases de Datos Relacionales
TALLER DE PROGRAMACIÓN III
ARCHIVOS Y CONEXIÓN A BASE DE DATOS. FileInputStream: Clase que representa ficheros de texto accedidos en orden secuencial, byte a byte. FileWriter: Clase.
Semana 5 Subprogramas..
Subconsultas Avanzadas
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
1 Microcomputación II Unidad II Administración de datos con MS-SQL Server y Visual Basic Introducción a Transact – SQL: Select, Delete, Update. Tema:
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
LENGUAJES DE PROGRAMACIÓN
REALIZADO POR: MERINO MERINO JORGE MORI CORREA JHONATAM VIDARTE DELGADO JAVIER.
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda.
Éxito = Esfuerzo, Voluntad, Práctica.. Objetivos: Describir algunos objetos ADO.NET utilizados habitualmente. Crear y abrir una conexión a una base de.
Medidor de Potencia Proyecto para el ramo ELO-326 Seminario de Computadores II: "Sistemas Embebidos y sus Aplicaciones" Theo Soto Guzmán Junio 2007.
CICLO DE VIDA Y NORMAALIZACION DE UN SISTEMA DE BASE DE DATOS
Structured Query Language (Lenguaje Estructurado de Consultas)
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Materia: Desarrollo e implementación web Carrera: Ing. Informática Docente: M.I. Rosario de Alba Domínguez Rodríguez ALUMNA: Marissa Michelle Juárez Kim.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
DISPARADORES Y SISTEMAS DE GESTION DE BASE DE DATOS DE SQL
VISUAL STUDIO. Paradigmas de Programación Funcionalidad Win16 Win32 COM MFC Componentes Servicios APIs Windows 3.0.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
DML Transact SQL Sesión IX Introducción a los procedimientos almacenados.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Procedimientos almacenados en C# Edgar Sánchez Logic Studio Director Regional de Microsoft, Ecuador

CLR hospedado El CLR de .NET se hospeda dentro de SQL Server para mejorar el rendimiento Las aplicaciones corren en el mismo espacio de direcciones que SQL Server Procedimientos almacenados en cualquier lenguaje soportado por el CLR Acceso a recursos fuera de SQL Server Código .NET Función T-SQL Base de datos Proceso de SQL Server This shows an important feature of SQL Server, that the .net runtime is hosted by it. This very different than the way that other databases usually host a virtual machine in a separate process. Makes use of SQL more approachable as it allows familiar languages and programming constructs to be used.

Código procedimental en SQL Server 2005 SQL Server 2005 soporta código en cualquier lenguaje .NET Procedimientos almacenados Funciones definidas por el usuario (UDFs) Triggers El runtime de .NET se carga con el primer acceso

El código .NET y Transact SQL El código .NET y T-SQL se pueden invocar entre sí Sujeto a las reglas de SQL Server Los parámetros .NET deben ajustarse a T-SQL Tanto el código .NET como T-SQL tienen escenarios adecuados de uso

El código .NET es rápido y seguro El código .NET puede ser más rápido en algunos casos Es compilado y no interpretado como lo son los procedimientos almacenados T-SQL El código .NET es seguro La seguridad del código es revisada cuando se cataloga Los procedimientos almacenados extendidos no se pueden revisar para evitar código peligroso

El código .NET y el framework El código .NET puede usar el .NET Framework Sólo se aceptan métodos, clases y assemblies específicos Consideraciones de seguridad Vigilado cuando El assembly es catalogado El código es ejecutado

Acceso a datos con Transact-SQL T-SQL es mejor para acceso a datos No hay coerción de tipos Todo el código pre-SQL Server 2005 está escrito en T-SQL SQL Server 2005 agrega el manejo de excepciones a T-SQL

Transact-SQL puede ser más rápido T-SQL puede ser más rápido para acceso a datos Acceso directo a los buffers internos de SQL Server Biblioteca de funciones rica y centrada en datos No hay conversión de tipos

Procedimientos .NET y Transact-SQL Transact-SQL es mejor para código centrado en acceso a datos No se carga el runtime de .NET Acceso directo a la capa de datos Programación procedimental .NET es mejor para código que no accese a datos Fórmulas matemáticas Acceso a recursos del sistema fuera de SQL Server Programación orientada a objetos Ambos tipos de código Guardan y cargan código desde la base de datos Basados en estándares ANSI Transact-SQL es una variación de la norma ANSI SQL PSM El código .NET es similar a la especificación ANSI SQL JRT

Catalogación de código .NET El código procedimental .NET debe ser catalogado Las funciones procedimentales .NET deben ser catalogadas public class Math { public static int invert() { ... } public static int not() {...} } Arith.dll CREATE ASSEMBLY Arith ... go CREATE FUNCTION invert ... CREATE FUNCTION not ... In order to use functions from an assembly, first the assembly must be cataloged. However cataloging the assembly itself does not make any of the functions in it available. After the assembly has been cataloged, each function in it that you want to be available to SQL Server must be individually cataloged.

Mapeo de nombres T-SQL Nombre T-SQL debe mapearse al nombre .NET El nombre .NET se denomina nombre externo El nombre externo es delimitado por assembly, namespace y clase In order to catalog a function, besides the name of the function you must know the name of the assembly it came from, the name of the class that contains it, and the name of the namespace that contains the class.

Nombres externos de funciones Los nombres externos se componen de tres partes El nombre simbólico del assembly es separado por '.' Nombre completo de la clase, en apóstrofes o corchetes en el namespace .NET El nombre de función separado por '.' El nombre del assembly no distingue mayúsculas de minúsculas El nombre de la clase y el método si los distingue Aún si el lenguaje .NET no lo hace The assembly name that contains a function is not case sensitive, but the namespace, class, and function name are. This is true even if the source of the function was VB.NET. GEO.[Math.Arith].invert

Modelo de programación SQL Server SQL Server 2005 incluye dos proveedores de datos System.Data.SqlServer System.Data.SqlClient Los modelos de programación tienen algunas diferencias SqlClient usa una SqlConnection SqlServer usa un SqlContext Client code creates a new connection to the database. Server code uses the "current" connection, abstracted by SqlContext. Actually SqlContext contains more than the current connection. Database System.Data.SqlClient Connection Select * from ... SqlConnection Microsoft.SqlServer.Server SqlContext

Código fuera de la base de datos El código fuera de la base de datos necesita establecer una conexión Establecer buffers Iniciar un lote de comandos Iniciar una transacción o participar en una SqlClient must physically connect to the database. Note: this slide does not mean that SqlClient uses managed sockets; it uses the SQL Server netlibs. SqlClient uses buffers inside the client and its Connection.BeginTransaction actually instructs the server to issue a SQL "BEGIN TRAN". Database System.Data.SqlClient Input Buffer Output Buffer Transaction Connection Socket

Código dentro de la base de datos SqlServer no necesita una conexión Una conexión explícita desperdicia recursos Los comandos son parte del mismo lote El código que se ejecuta puede ser ya parte de una transacción El contexto provee acceso directo a la base de datos El código corre como si fuera parte de la base de datos Inside the server, no extra buffers, connection overhead or sockets need be used. Note: you can use SqlClient from inside the server to establish a different connection.

SqlContext SqlContext representa el contexto actual de ejecución en el SQL Server Pipe permite insertar información en la corriente de salida TDS Resultsets y mensajes TriggerContext provee información de contexto cuando se ejecuta un trigger Todos los comandos son parte del lote actual Pueden heredar la transacción actual No afectan al nivel de anidamiento transaccional

Resultados de comandos El acceso a SQL Server produce uno de cuatro tipos de resultados Cuenta de filas afectadas por el comando Resultado escalar, p.ej. Un agregado como el total de ventas Resultado con una sola fila, p.ej. Una dirección de un vendedor Resultado multi-fila, p.ej. Un conjunto de facturas pendientes

Conversión al tipo apropiado Resultado escalar Producido por SqlCommand.ExecuteScalar La manera más eficiente y simple de obtener un valor escalar Usado para obtener un valor agregado Usado para obtener un valor devuelto por un procedimiento almacenado Se debe convertir al tipo apropiado Función agregada ExecuteScalar returns an System.Object, which must be cast to the appropriate type. cmd.CommandText="select count(*) from authors"; int count = (int)cmd.ExecuteScalar(); Conversión al tipo apropiado Obtener el resultado escalar

Resultado con una sola fila Producido por SqlCommand.ExecuteRow Devuelve un ISqlRecord, puede ser convertido a IDataRecord Usar solo cuando se espera una única fila La fila es de lectura solamente Todas las filas son devueltas pero solo la primera es accesible, la consulta debe limitar a una sola Limitar a una sola fila You can execute a query that returns more than one row, but it is inefficient when used with ExecuteRow. There is no way to access rows except for the first one. cmd.CommandText="Select top 1 * from authors"; ISqlRecord row = cmd.ExecuteRow(); String lastName = row.GetString(1); Obtener el resultado de una sola fila

El resultado será read-only Resultado multi-fila Producido por SqlCommand.ExecuteReader SqlDataReader es muy liviano Comportamiento forward-only, read-only Se puede devolver al cliente El resultado será read-only Of course if you expect only a single row to be returned ExecuteRow is better choice. SqlDataReader rdr = cmd.ExecuteReader(); while(rdr.Read() == true) { // trabajar con la fila } Mínimo de recursos utilizado

Funciones que devuelven tablas y ISqlReader El proveedor SqlServer puede devolver una TABLE a través de una UDF Se declara como otras UDFs, el valor retornado es un ISqlReader Devolver SqlDataReader no es soportado SqlFunctionAttribute also contains a TableDefinition property. This is used with Visual Studio auto-deploy for Table-Valued Functions. public static ISqlReader myTVF(SqlString region) { ISqlReader irdr = null; // obtener una clase que implementa ISqlReader // poblar el objeto ISqlReader return(irdr); }

SqlTriggerContext SqlTriggerContext es el ambiente dentro de un trigger Se puede obtener en SqlContext.TriggerContext Contiene a la enumeración Trigger.Action INSERT, UPDATE, or DELETE Contiene IsUpdatedColumn() Booleano que dice si una columna está siendo actualizada Se puede obtener EventData Para triggers extendidos y mayor control

Uso de SqlTriggerContext public static void DontInsertSpecialID() { using(SqlConnection conexion = new SqlConnection("context connection=true")) { SqlTriggerContext tc = SqlContext.TriggerContext; if (tc.TriggerAction == TriggerAction.Insert) { SqlCommand cmd = new SqlCommand(); cmd.CommandText = "select count(*) from inserted " + "where au_id = '111-11-1111'"; cmd.Connection = conexion; if ((int)cmd.ExecuteScalar() > 0) { cmd.CommandText = "ROLLBACK TRANSACTION"; SqlContext.Pipe.Execute(cmd); }

¿Preguntas? Lectura recomendada: A First Look at Microsoft SQL Server 2005 for Developers Bob Beauchemin, Niels Berglund, Dan Sullivan Addison-Wesley Professional; 1st edition (June 25, 2004) ISBN: 0321180593