ADO.NET Acceso a Datos con Microsoft .Net Framework...

46
1 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0 U1 – ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0 En esta unidad vamos a tratar de dar una visión global de lo que significa ADO.NET y su arquitectura. Además conoceremos las diferentes posibilidades de modelos de Datos, uno con conexión permanente y otro puntualmente. Para finalizar explicaremos las principales instrucciones de SQL y como crear procedimientos almacenados. Al finalizar el estudio de estos capítulos serás capaz de: Definir de ADO.NET y sus principales características. Utilizar procedimientos almacenados y consultas SQL.

Transcript of ADO.NET Acceso a Datos con Microsoft .Net Framework...

Page 1: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

1 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

U1 – ADO.NET Acceso a Datos con Microsoft

.Net Framework 4.0

En esta unidad vamos a tratar de dar una visión global de lo que significa ADO.NET y su arquitectura.

Además conoceremos las diferentes posibilidades de modelos de Datos, uno con conexión permanente y otro puntualmente.

Para finalizar explicaremos las principales instrucciones de SQL y como crear procedimientos almacenados.

Al finalizar el estudio de estos capítulos serás capaz de:

• Definir de ADO.NET y sus principales características.

• Utilizar procedimientos almacenados y consultas SQL.

Page 2: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

2 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

C1 – Introducción a ADO.NET

En este capítulo conoceremos lo que significa ADO.NET, su arquitectura y los tipos de modelos de conexión a base de datos.

Al finalizar el estudio de estas lecciones serás capaz de:

• Definir ADO.NET.

• Conocer su arquitectura

• Diferenciar los tipos de modelos de conexión.

Page 3: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L1 - ¿Qué es ADO.NET?

Definición

ADO.NET se puede definir como una serie de componentes de software, que son utilizados para interactuar con los datos, bien sea accediendo a ellos o bien a sus servicios.

Se trata de una evolución del modelo de acceso a datos Objects). Que utiliza algunos objetos como “otros nuevos (los más relevantes son ““DataAdapter”).

Esta tecnología la empleamos para acceder y modificar datos guardados en un Sistema de Gestor de Base de Datos relacionales, tales como por ejemplo: SQL Server, MySQL, Oracle,..

El objeto más importante a la hora de trabajar con este modelo de acceso a base de datos es el DataSet, el cual será el encargado de almacenar los datos, sin estar conectados a Base de Datos, y sin saber sobre el origen y destino de los datos que contiene.

Aparte del almacenamiento y recuperación de datosposibilidad de integrarse con el estándar directamente a y desde XML lo que favorece el intercambio de información.

ADO.NET nos proporciona diferentes clases del nombre de espacio System.Data dentro de las cuáles, destacaremos por encima de toclase DataSet y la clase DataTable

Esto nos facilita el trabajo en nutilicen una determinada fuente de datos y deseemos en un momento dado, hacer uso de otra fuente de datos.

ADO.Net tiene diferenciada dos capas principales:

1. Conexión con la base de datos, la ejecución de una instrucción SQL determinada, una vista, etc., la realiza el proveedor de acceso a datos.

2. Recuperar esos datos para tratarlos, modificarlos o volcarlos, es acccapa superior que corresponde con el nombre de espacio System.Data

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

¿Qué es ADO.NET?

ADO.NET se puede definir como una serie de componentes de software, que son utilizados para interactuar con los datos, bien sea accediendo a ellos o bien a sus servicios.

Se trata de una evolución del modelo de acceso a datos ADO (ActiveX Data Objects). Que utiliza algunos objetos como “Connection” y “Commandotros nuevos (los más relevantes son “DataSet”, “DataReader” y

empleamos para acceder y modificar datos guardados en un Sistema de Gestor de Base de Datos relacionales, tales como por ejemplo: SQL

El objeto más importante a la hora de trabajar con este modelo de acceso a base , el cual será el encargado de almacenar los datos, sin estar

conectados a Base de Datos, y sin saber sobre el origen y destino de los datos que

Aparte del almacenamiento y recuperación de datos, ADO.NET introduce la e con el estándar XML, los datos pueden 'Serializarse'

directamente a y desde XML lo que favorece el intercambio de información.

proporciona diferentes clases del nombre de espacio System.Data dentro de las cuáles, destacaremos por encima de todas, la clase DataView

DataTable.

facilita el trabajo en n-capas y la posible migración de aplicaciones queutilicen una determinada fuente de datos y deseemos en un momento dado, hacer uso de otra fuente de datos.

.Net tiene diferenciada dos capas principales:

Conexión con la base de datos, la ejecución de una instrucción SQL determinada, una vista, etc., la realiza el proveedor de acceso a datos.Recuperar esos datos para tratarlos, modificarlos o volcarlos, es acccapa superior que corresponde con el nombre de espacio System.Data

3 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

(ActiveX Data Command”, y añade

empleamos para acceder y modificar datos guardados en un Sistema de Gestor de Base de Datos relacionales, tales como por ejemplo: SQL

El objeto más importante a la hora de trabajar con este modelo de acceso a base , el cual será el encargado de almacenar los datos, sin estar

conectados a Base de Datos, y sin saber sobre el origen y destino de los datos que

introduce la 'Serializarse'

directamente a y desde XML lo que favorece el intercambio de información.

proporciona diferentes clases del nombre de espacio System.Data DataView, la

migración de aplicaciones que utilicen una determinada fuente de datos y deseemos en un momento dado, hacer

Conexión con la base de datos, la ejecución de una instrucción SQL determinada, una vista, etc., la realiza el proveedor de acceso a datos. Recuperar esos datos para tratarlos, modificarlos o volcarlos, es acción de la capa superior que corresponde con el nombre de espacio System.Data

Page 4: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

4 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L2 – Arquitectura de ADO.NET

Tradicionalmente, el procesamiento de datos ha dependido principalmente de un modelo de dos niveles basados en una conexión.

Actualmente en la programación utilizamos arquitecturas de varios niveles, lo que origina que los programadores pensemos en un enfoque sin conexión para proporcionar una mejor escalabilidad a nuestras aplicaciones.

Los componentes de ADO.Net los podemos diferenciar en dos bloques:

• Proveedores de datos de .Net Framework. • DataSet.

Proveedores de datos de .Net Framework

Son el vínculo entre los orígenes de datos y el DataSet, diseñados explícitamente para la manipulación de datos y el acceso a ellos.

El funcionamiento de cualquier proveedor de datos .Net es el siguiente:

1. Conectarnos a una base de datos. 2. Ejecutar una o varias sentencias. 3. Recuperar resultados.

Objetos principales que integran los diferentes proveedores de datos .Net

• Connection: proporciona la conexión a un origen de datos determinado.

• Command: ejecuta comandos para recuperar datos o modificarlos, además

nos permite ejecutar procedimientos almacenados.

• DataReader: flujo de datos desde un origen de datos.

• DataAdapter: relaciona el elemento DataSet con el origen de datos.

Page 5: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Objetos secundarios que integran los diferentes proveedores de datos .Net

• Transaction: incluye comandos en las transacciones a un origen de datos.

• Commandbuilder

de un DataAdapteracerca de parámetros

colección Parameters• ConnectionStringBuilder:

de conexión utilizadas por los objetos

• Parameter: define los parámetros de entrada, salida y valores devueltos

para los comandos y procedimientos almacenados.

• Exception: se devuelve cuando se detecta un error en el origen de datos.

• Error: expone la información relacionada con una a

devueltos por un origen de datos.

Diferentes proveedores de datos .Net Framework

SQL Server

El proveedor de datos .NET Frameworkpropio protocolo para comunicarse con SQL Server.

Recuerde

Es ligero y presenta un buen rendimiento porque está optimizado para tener acceso a SQL Server directamente, sin agregar una capa OLE DB u ODBC.

El proveedor de datos .NET Framework para SQL Server admite tanto transacciones locales

En el caso de las transacciones distribuidas, el proveedor de datos .NET para SQL Server se inserta en unpropiedades mediantede System.Transactions

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Objetos secundarios que integran los diferentes proveedores de

: incluye comandos en las transacciones a un origen de datos.

Commandbuilder: genera automáticamente las propiedades de comando

DataAdapter, u obtiene de un procedimiento almacenado información

acerca de parámetros, con la que puédenos rellenar la

Parameters de un objeto Command. ConnectionStringBuilder: crea y administra el contenido de las cadenas

de conexión utilizadas por los objetos Connection. define los parámetros de entrada, salida y valores devueltos

para los comandos y procedimientos almacenados.

devuelve cuando se detecta un error en el origen de datos.

expone la información relacionada con una advertencia o error

devueltos por un origen de datos.

Diferentes proveedores de datos .Net Framework

El proveedor de datos .NET Framework para SQL Server (SqlClient) utilizapropio protocolo para comunicarse con SQL Server.

ligero y presenta un buen rendimiento porque está optimizado para tener acceso a SQL Server directamente, sin agregar una capa OLE DB u

El proveedor de datos .NET Framework para SQL Server admite tanto locales como transacciones distribuidas.

En el caso de las transacciones distribuidas, el proveedor de datos .NET para se inserta en una transacción, a la que podemos acceder a sus

propiedades mediante los servicios de componentes de Windows o System.Transactions

5 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Objetos secundarios que integran los diferentes proveedores de

: incluye comandos en las transacciones a un origen de datos.

genera automáticamente las propiedades de comando

btiene de un procedimiento almacenado información

crea y administra el contenido de las cadenas

define los parámetros de entrada, salida y valores devueltos

devuelve cuando se detecta un error en el origen de datos.

dvertencia o error

para SQL Server (SqlClient) utiliza su

El proveedor de datos .NET Framework para SQL Server admite tanto

En el caso de las transacciones distribuidas, el proveedor de datos .NET para acceder a sus

los servicios de componentes de Windows o

Page 6: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

OLE DB

El proveedor de datos .NET Framework para OLE DB admite tanto transacciones locales

OLE DB no funciona con el proveedor OLE DB para ODBC

Para tener acceso a un origen de datos ODBC mediante ADO.NET, utilizaremos el proveedor de datos .NET Framework para

En el caso de las transacciones distribuidas, el proveedor de datos .NET para OLE DB se inserta en una transacción, a la propiedades mediante

Recuerde

Para tener acceso a un origen de datomediante ADO.NET, utilizaremosdatos .NET Framework para ODBC.

ODBC

El proveedor de datos .NET Framework para ODBC (Odbc) utiliza el Administrador de controladores ODBC nativos para habilitar el acceso a datos.

En el proveedor de datos de ODBClocales como transacciones

En el caso de las transacciones distribuidas, el proveedor de datos .NET para

ODBC se inserta en unpropiedades mediante

Recuerde

Admite tanto transacciones locales como transacciones distribuidas.

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

El proveedor de datos .NET Framework para OLE DB admite tanto locales como transacciones distribuidas.

OLE DB no funciona con el proveedor OLE DB para ODBC (MSDASQL).

Para tener acceso a un origen de datos ODBC mediante ADO.NET, el proveedor de datos .NET Framework para ODBC

En el caso de las transacciones distribuidas, el proveedor de datos .NET para OLE DB se inserta en una transacción, a la que podemos acceder a sus propiedades mediante los servicios de componentes de Windows 2000

Para tener acceso a un origen de datos ODBC mediante ADO.NET, utilizaremos el proveedor de datos .NET Framework para ODBC.

datos .NET Framework para ODBC (Odbc) utiliza el Administrador de controladores ODBC nativos para habilitar el acceso a

l proveedor de datos de ODBC podemos utilizar tanto transacciones como transacciones distribuidas.

s transacciones distribuidas, el proveedor de datos .NET para

ODBC se inserta en una transacción, a la que podemos acceder a sus propiedades mediante los servicios de componentes de Windows 2000

dmite tanto transacciones locales como transacciones distribuidas.

6 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

El proveedor de datos .NET Framework para OLE DB admite tanto

(MSDASQL).

Para tener acceso a un origen de datos ODBC mediante ADO.NET, ODBC.

En el caso de las transacciones distribuidas, el proveedor de datos .NET para acceder a sus

Windows 2000.

datos .NET Framework para ODBC (Odbc) utiliza el Administrador de controladores ODBC nativos para habilitar el acceso a

tanto transacciones

s transacciones distribuidas, el proveedor de datos .NET para

acceder a sus Windows 2000.

Page 7: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

ORACLE

El proveedor de datos .NET Framework para Oracle (OracleClient)

conectarnos a una base de datos Oracledel cliente de Oracle.

El proveedor de datos es compatible con la versión 8.1.7 o software de cliente de Oracle, el cual debeordenador antes de ser utilizado.

El proveedor de datos admite tanto transacciones distribuidas.

Las clases del proveedor de datos .NET Framework para Oracle se encuentran en el espacio de nombresensamblado System.Data.OracleClient.dll.

Al compilar una aplicación referencia tanto a System.Data.dll

Recuerde

El proveedor de datos es compatible con la versión 8.1.7 o posterior delde Oracle.

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

El proveedor de datos .NET Framework para Oracle (OracleClient)

base de datos Oracle mediante el software de conectividad cliente de Oracle.

El proveedor de datos es compatible con la versión 8.1.7 o superiorsoftware de cliente de Oracle, el cual debemos de estar instalado en el ordenador antes de ser utilizado.

El proveedor de datos admite tanto transacciones locales como transacciones

Las clases del proveedor de datos .NET Framework para Oracle se encuentran en el espacio de nombres System.Data.OracleClient y están incluidas en el ensamblado System.Data.OracleClient.dll.

Al compilar una aplicación en la que utilizamos este proveedor de datos, hace System.Data.dll como System.Data.OracleClient.dll

El proveedor de datos es compatible con la versión 8.1.7 o posterior del software de cliente

7 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

El proveedor de datos .NET Framework para Oracle (OracleClient) nos permite

mediante el software de conectividad

superior del de estar instalado en el

como transacciones

Las clases del proveedor de datos .NET Framework para Oracle se encuentran y están incluidas en el

proveedor de datos, hace System.Data.OracleClient.dll.

Page 8: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

DataSet

Es un componente fundamental

Está diseñado para el acceso a datos

Es similar al objeto Recordset de ADO, pero más eficaz y desconectado del origen de datos.

Nos permite la conexión a diversos datos locales, así pues, en un mismo DataSet podemos tener datos que provengan de Sql Server, Oracle o de un archivo XML.

El objeto DataSet es como si los datos estuvieran en estructuras similares a las de una base de datos, conrestricciones.

El objeto DataSet está compuesto a su vez por una colección de DataTables

Los DataTables están relacionados entre sí por DataRelation, mediante la propiedad Tables del DataSet, y lo más importante es que distinguen entre mayúsculas y minúsculas, es decir, llame “myTabla1!, y otra “MyTabla1”.

Los objetos Datatables están a su vez formados por tienen información sobre claves principales, externas y restricciones.

A medida que se vayan realizando cambios en el DataSet, podemos realizar una comprobación de estos datos antes de modificar los datos de origen, para esto se emplea el método “GetChangesDataSet pero que solo contiene los cambios realizados. Posteriormente los objetos DataAdapter u otros objetos serán los encargados de modificar el origen de datos.

Del objeto DataAdapter cabe mencionar l

• Fill: llama al comando select

• Update: llama al comando insert, update o delete, por cada fila modificada.

Recuerde

Siempre esta desconectado del origen de datos.

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

fundamental de la arquitectura ADO.NET.

Está diseñado para el acceso a datos independientemente del origen de datos

Es similar al objeto Recordset de ADO, pero más eficaz y siempre esta del origen de datos.

a diversos orígenes de datos o incluso para administrar en un mismo DataSet podemos tener datos que provengan

de Sql Server, Oracle o de un archivo XML.

es como si los datos estuvieran en una memoria cachéa las de una base de datos, con tablas, columnas, relaciones y

El objeto DataSet está compuesto a su vez por una colección de DataTables

están relacionados entre sí por DataRelation, se accedepiedad Tables del DataSet, y lo más importante es que distinguen

entre mayúsculas y minúsculas, es decir, podemos tener dos tablas, una“MyTabla1”.

Los objetos Datatables están a su vez formados por columnas y filastienen información sobre claves principales, externas y restricciones.

realizando cambios en el DataSet, podemos realizar una estos datos antes de modificar los datos de origen, para esto se

hanges”, el cual, crea una copia de nuestro objeto DataSet pero que solo contiene los cambios realizados. Posteriormente los objetos DataAdapter u otros objetos serán los encargados de modificar el origen de datos.

Del objeto DataAdapter cabe mencionar los dos métodos característicos:

: llama al comando select

: llama al comando insert, update o delete, por cada fila modificada.

iempre esta desconectado del origen de datos.

8 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

del origen de datos.

esta

o incluso para administrar en un mismo DataSet podemos tener datos que provengan

caché, con tablas, columnas, relaciones y

El objeto DataSet está compuesto a su vez por una colección de DataTables

se accede a ellos piedad Tables del DataSet, y lo más importante es que distinguen

, una que se

columnas y filas, los cuales tienen información sobre claves principales, externas y restricciones.

realizando cambios en el DataSet, podemos realizar una estos datos antes de modificar los datos de origen, para esto se

”, el cual, crea una copia de nuestro objeto DataSet pero que solo contiene los cambios realizados. Posteriormente los objetos DataAdapter u otros objetos serán los encargados de modificar el origen de datos.

os dos métodos característicos:

: llama al comando insert, update o delete, por cada fila modificada.

Page 9: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

9 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

La siguiente imagen muestra un ejemplo de Arquitectura ADO.Net

(Arquitectura_ADO.Net)

Page 10: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L3 – Modelo conectado de acceso a datos.

Este modelo se basa en trabajar con el origen de datos conectado, utilizaobjeto DataReader, sus principales características

• Es de sólo lectura

modo “sólo lectura”

• Se maneja en una

origen de datos.

• Es rápido: es bastante rápido a la hora de trabajar con datos.

El flujo de trabajo para un DataReader será:

Connection � Command

(ModeloConectadoAccesoDatos

El objeto DataReader obtiene un conjunto de valores llenando un pequeño

de datos e información.

Si el número de registros que hay en el buffer s

DataReader regresará a la fuente de datos para recuperar más registros.

Si el servicio de SQL Server está

de datos está parada, la aplicación generará un

registro.

Recuerde

Siempre está conectado a la base de datos para buscar el siguiente valor, si se pierde la conexión provocará un error en la aplicación.

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Modelo conectado de acceso a datos.

Este modelo se basa en trabajar con el origen de datos conectado, utilizaobjeto DataReader, sus principales características son las siguientes:

lectura, es decir, la conexión con el origen de datos será de

modo “sólo lectura”

Se maneja en una única dirección: lee de forma secuencial los datos de un

: es bastante rápido a la hora de trabajar con datos.

para un DataReader será:

Command � DataReader � Aplicación

ModeloConectadoAccesoDatos)

obtiene un conjunto de valores llenando un pequeño

Si el número de registros que hay en el buffer se acaban, el objeto

regresará a la fuente de datos para recuperar más registros.

Si el servicio de SQL Server está detenido en ese momento o en su caso, la fuente

de datos está parada, la aplicación generará un error a la hora de leer el siguie

Siempre está conectado a la base de datos para buscar el siguiente valor, si se pierde la conexión provocará un error en la aplicación.

10 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Este modelo se basa en trabajar con el origen de datos conectado, utilizamos el son las siguientes:

, es decir, la conexión con el origen de datos será de

: lee de forma secuencial los datos de un

: es bastante rápido a la hora de trabajar con datos.

obtiene un conjunto de valores llenando un pequeño buffer

regresará a la fuente de datos para recuperar más registros.

en ese momento o en su caso, la fuente

a la hora de leer el siguiente

Page 11: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L4 – Modelo desconectado de acceso a datos

En general en todas las aplicaciones que se utilicen, o se vayan a desarrollar, lo más habitual es trabajar con un modelo desconectado de acceso a datos, mediante Datasets y DataAdapters

La estructura general de este modelo es la siguiente:

Connection � DataAdapter

(ModeloDesConectadoAccesoDatos

El primer bloque “Connectionindependientemente de que

El segundo bloque “DataAdapternexo entre connection y dataset.encarga de ejecutar sentenciasmodificar datos del origen

El tercer bloque “DataSetdel origen de datos.

El cuarto y último bloque “usuario que contenga el dataset.

Recuerde

En este modelo la manipulación de datos se realiza mediante el DataSet, sólo nos conectaremos al origen de datos puntualmente.

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Modelo desconectado de acceso a datos

En general en todas las aplicaciones que se utilicen, o se vayan a desarrollar, lo más habitual es trabajar con un modelo desconectado de acceso a datos, mediante Datasets y DataAdapters.

La estructura general de este modelo es la siguiente:

DataAdapter � DataSet � Aplicación

ModeloDesConectadoAccesoDatos)

Connection” se refiere a la comunicación con la fuenteque luego se desconecte de ella.

DataAdapter” se encarga de realizar las funcionesdataset. Cada proveedor de datos tiene uno

sentencias sql, ya sean para consultar datos comoorigen de datos.

DataSet” se corresponde donde se guardaran los datos

“Aplicaciones” se encarga de mostrar los dataset.

En este modelo la manipulación de datos se realiza el DataSet, sólo nos conectaremos al

origen de datos puntualmente.

11 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

En general en todas las aplicaciones que se utilicen, o se vayan a desarrollar, lo más habitual es trabajar con un modelo desconectado de acceso a datos, mediante

fuente de datos,

funciones de puente o uno propio, que se como para

datos recogidos

datos al

Page 12: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L5 – El patrón de diseño DAO (Data Access Objects)

El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos.

Definición

Es un componente de software que

una interfaz

más dispositivos de almacenamiento de datos,

tales como una

El uso de este patrón ofrece varios beneficios para la persistencia de datos:

• Sirve para separar el

altamente recomendable en sistemas medianos o grandes, o que manejen

lógica de negocio compleja.

• Encapsula la fuente de datos

conectados a la vez que llaman a la misma clase

memoria una única copia.

• Oculta la API con la que se accede a los datos. Por ejemplo en .NET si

usamos siempre OleDb y queremos cambiar al NHibernate.

• Centraliza Todos los Accesos a Datos en un

Se describe ahora un ejemplo simple del funcionamiento de este método.

Ejemplo.

Existirán dos clases, una que contendrá las propiedades y campos de nuestra clase

(CocheClass), y otra con los métodos de acceso a base de datos (

Se tendrá una tabla en la base d

por tres campos (ID, Matricula, Potencia

CocheClass

Esta clase es el modelo que corresponde a una tabla de la base de datos (tabla

Coches), es decir, nuestra clase CocheClass tiene

Potencia) que se asemejan con las tres columnas existentes en la tabla Coche.

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

El patrón de diseño DAO (Data Access Objects)

El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos.

Es un componente de software que suministra

interfaz común entre la aplicación y uno o

más dispositivos de almacenamiento de datos,

tales como una Base de datos o un archivo.

El uso de este patrón ofrece varios beneficios para la persistencia de datos:

separar el acceso a datos de la lógica de negocio

altamente recomendable en sistemas medianos o grandes, o que manejen

lógica de negocio compleja.

Encapsula la fuente de datos, es decir, si tenemos muchos usuarios

conectados a la vez que llaman a la misma clase, sólo tendremos cargado en

memoria una única copia.

con la que se accede a los datos. Por ejemplo en .NET si

usamos siempre OleDb y queremos cambiar al NHibernate.

Centraliza Todos los Accesos a Datos en un Capa Independiente

hora un ejemplo simple del funcionamiento de este método.

Existirán dos clases, una que contendrá las propiedades y campos de nuestra clase

), y otra con los métodos de acceso a base de datos (CocheDAO

Se tendrá una tabla en la base de datos llamada “Coche”, la cual estará compuesta

, Matricula, Potencia)

Esta clase es el modelo que corresponde a una tabla de la base de datos (tabla

Coches), es decir, nuestra clase CocheClass tiene 3 atributos (ID, Matrícu

Potencia) que se asemejan con las tres columnas existentes en la tabla Coche.

12 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

El patrón de diseño DAO (Data Access Objects)

El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos.

El uso de este patrón ofrece varios beneficios para la persistencia de datos:

acceso a datos de la lógica de negocio. Algo

altamente recomendable en sistemas medianos o grandes, o que manejen

, es decir, si tenemos muchos usuarios

, sólo tendremos cargado en

con la que se accede a los datos. Por ejemplo en .NET si

Capa Independiente.

hora un ejemplo simple del funcionamiento de este método.

Existirán dos clases, una que contendrá las propiedades y campos de nuestra clase

CocheDAO).

e datos llamada “Coche”, la cual estará compuesta

Esta clase es el modelo que corresponde a una tabla de la base de datos (tabla

(ID, Matrícula,

Potencia) que se asemejan con las tres columnas existentes en la tabla Coche.

Page 13: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

13 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Definimos las tres variables pCocheID, pCocheMatricula, pCochePotencia, que

serán del mismo tipo de dato que las de la tabla (o lo más similar posible), existirán

además los métodos get y set para obtener o establecer sus valores.

Namespace CocheClass

''' <summary>

''' Describe un coche

''' </summary>

Public Class CochelClass

#Region "Campos"

''' <summary>

''' Identifica el coche de forma única en la base de datos

''' </summary>

Private pCocheID As Integer

''' <summary>

''' Matrícula del coche

''' </summary>

Private pCocheMatricula As String

''' <summary>

''' Potencia o número de caballos que tiene el coche

''' </summary>

Private pCochePotencia As Integer

#End Region

Page 14: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

14 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

#Region "Propiedades"

''' <summary>

''' Identifica el coche de forma única en la base de datos

''' </summary>

Public Property CodigoCoche() As Integer

Get

Return pCocheID

End Get

Set(ByVal value As Integer)

pCocheID = value

End Set

End Property

''' <summary>

''' Matrícula del coche

''' </summary>

Public Property Matricula() As String

Get

Return pCocheMatricula

End Get

Set(ByVal value As String)

pCocheMatricula = value

End Set

End Property

Page 15: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

15 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

''' <summary>

''' Potencia o número de caballos que tiene el coche

''' </summary>

Public Property Potencia() As Integer

Get

Return pCochePotencia

End Get

Set(ByVal value As Integer)

pCochePotencia = value

End Set

End Property

#End Region

End Class

End Namespace

Page 16: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

16 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

CocheDAO

En esta clase es donde definimos las 3 variables que son: Codigocoche, Matricula, potencia.

También pondremos aquí el código de todos los métodos que queramos ejecutar en la base de datos (select, insert, update).

En nuestro ejemplo, pondremos dos select, uno para obtener la información de un solo coche, y otra para obtener todos los coches que tenemos en nuestra base de datos.

#Region "Nombre Campos Tabla" Public Const CodigoCoche As String = "COCHE_ID" Public Const Matricula As String = "COCHE_MATRICULA" Public Const Potencia As String = "COCHE_POTENCIA"#End Region

#Region "Select" ''' <summary> ''' Devolvemos la información sobre un coche consultada sobre un id concreto ''' </summary> ''' <param name="CodigoCoche">Código del coche que buscamos</param> ''' <returns>Retorna un coche bean con los datos de un coche</returns> ''' <remarks></remarks> Public Function GetCoche(ByVal CodigoCoche As Integer) As CocheClass.CocheClass Dim cocheClass As CocheClass.CocheClass = Nothing Dim dr As SqlDataReader = Nothing Try Dim sql As String = "SELECT COCHE_ID, COCHE_MATRICULA, COCHE_POTENCIA FROM COCHE WHERE COCHE_ID = @CodigoCoche" Dim command As New SqlCommand(sql, Me.Conexion) command.Parameters.Add(New SqlParameter("@CodigoCoche", CodigoCoche)) dr = command.ExecuteReader() If dr.Read Then cocheClass.CodigoCoche = Integer.Parse(dr("COCHE_ID").ToString) cocheClass.Matricula = dr("COCHE_MATRICULA").ToString cocheClass.Potencia = dr("COCHE_POTENCIA") End If Catch ex As Exception Throw New Excepciones.DAOException(ex) Finally Me.CerrarDataReader(dr) End Try Return cocheClass End Function

Page 17: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

17 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

''' <summary> ''' Devolvemos una lista con todos los coches que hay en la base de datos ''' </summary> ''' <returns>Retorna una lista genérica de CocheClass.CocheClass</returns> ''' <remarks></remarks> Public Function obtenerTodosCoches() As List(Of CocheClass.CocheClass) Dim dr As SqlDataReader = Nothing Dim lista As New List(Of CocheClass.CocheClass) Try Dim sql As String = "SELECT COCHE_ID, COCHE_MATRICULA, COCHE_POTENCIA FROM COCHE" Dim command As New SqlCommand(sql, Me.Conexion) dr = command.ExecuteReader() While dr.Read Dim bean As New CocheClass.CocheClass bean.CodigoCoche = Integer.Parse(dr("COCHE_ID").ToString) bean.Matricula = dr("COCHE_MATRICULA").ToString bean.Potencia = dr("COCHE_POTENCIA") lista.Add(bean) End While Catch ex As Exception Throw New Excepciones.DAOException(ex) Finally Me.CerrarDataReader(dr) End Try Return lista End Function #End Region

Page 18: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

18 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

C2 – Uso de procedimientos almacenados e

instrucciones SQL

En este capítulo vamos a repasar las instrucciones SQL básicas, para después poder realizar procedimientos almacenados.

Al finalizar el estudio de estas lecciones serás capaz de:

• Instalación e importación base de datos Adventure Works.

• Ejecución de SQL básicas.

• Creación y uso de procedimientos almacenados.

Page 19: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

19 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L1 – Instalación de Base de Datos SQL Server Express

Vamos a utilizar siempre la base de datos SQL Server Express. Lo primero de todo nos descargaremos la base de datos SQL Server 2008 R2 Express, de la siguiente url si nuestro equipo es de 32 bits: https://www.microsoft.com/betaexperience/pd/SQLEXPDBMT32/enus/default.aspx Si disponemos de un equipo de 64 bits la url es: https://www.microsoft.com/betaexperience/pd/SQLEXPDBMT64/enus/default.aspx Una vez que se haya terminado la descarga le daremos a ejecutar, para comenzar la instalación. (Véanse imágenes).

(sqlExpress_1) Comenzarán a extraerse los archivos.

(sqlExpress_2)

Page 20: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

20 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Comenzará el programa de instalación.

(sqlExpress_3) Ahora nos aparecerá una pantalla de la que elegiremos la 1º opción “Nueva instalación o agregar características a una instalación existente”.

(sqlExpress_4)

Page 21: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

21 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Nos aparecerá otra pantalla que nos indica que el proceso va a comenzar y se iniciará automáticamente el proceso de instalación.

(sqlExpress_5)

(sqlExpress_6)

Page 22: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

22 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

(sqlExpress_7) Una vez instalado estos componentes, seleccionaremos la opción de “Nueva instalación o agregar características compartidas” y pulsaremos el botón de “Siguiente”

(sqlExpress_8)

Page 23: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

23 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Ahora leeremos las condiciones y términos de la licencia. Marcaremos el check de “Acepto los términos de la licencia” y pulsaremos el botón de “Siguiente”

(sqlExpress_9) Por defecto se nos marcaran todas las opciones, sino estamos seguros podemos darle al botón de “Seleccionar Todo”. Acto seguido pulsaremos el botón de “Siguiente” para continuar.

(sqlExpress_10)

Page 24: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

24 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Si se desea podemos poner otro nombre de instancia, nosotros hemos dejado el que viene por defecto. El id. De instancia será el mismo nombre de la instancia. En el apartado de “Directorio raíz de instancia” podemos cambiar el lugar de instalación, nosotros también hemos dejado el que viene por defecto.

(sqlExpress_11)

Page 25: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

25 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

En esta pantalla en la pestaña de cuentas de servicio, en el tipo de inicio tiene como mínimo estar así:

• SQL Server Database Engine: automático. • SQL Server Browser: deshabilitado.

(sqlExpress_12) Ahora configuraremos las cuentas, elegiremos el “Modo Mixto”. En la contraseña escribiremos una correcta (debe contener números, letras y algún carácter especial) por ejemplo: admin.1234 El resto de pestañas no hace falta que configuremos ninguna opción especial.

(sqlExpress_13)

Page 26: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

26 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

En la pantalla de “Informe de errores”, pulsaremos el botón de “Siguiente”.

(sqlExpress_14) Ahora se empezará la instalación definitiva de todos los componentes necesarios para ejecutar SQL Server.

(sqlExpress_15)

Page 27: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

27 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

(sqlExpress_16) Una vez se haya terminada la instalación, nos aparecerá una pantalla de “Operación Completada”. Pulsaremos el botón de “Cerrar”

(sqlExpress_17)

Page 28: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

28 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Ahora nos descargaremos una base de datos con datos para poder efectuar las pruebas. Accederemos a la siguiente url: http://msftdbprodsamples.codeplex.com/releases/view/37109 Seleccionaremos la opción de “SQL2008.AdventureWorksLT2008_Only_DataBase.zip”

(dataBase_1)

Page 29: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

29 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Cuando seleccionemos el enlace se nos abrirá una pantalla para aceptar los términos de licencia. Pulsamos la opción de “I Agree” y comenzará la descarga.

Una vez descargado, lo descomprimimos. Habrá dos archivos uno con extensión .mdf y otro con extensión .ldf. Guardaremos ambos archivos en una carpeta que nos crearemos en C, la ruta sería, C:\\BaseDeDatos\ Antes de abrir la base de datos nos aseguraremos que tenemos iniciado el servicio. Para ello iremos a Inicio � Todos los programas �Microsoft SQL Server 2008 R2 � Herramientas de configuración � Administración de configuración de SQL Server Nos aparecerá una pantalla, pincharemos en Servicios de SQL Server y comprobaremos que el servicio de SQL Server (SQLEXPRESS) en la columna de “Estado” está en “Ejecución”

(sqlExpress_18)

Page 30: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

30 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Ahora iniciaremos el SQL Server. Inicio � Todos los programas � Microsoft SQL Server 2008 R2 � SQL Server Management Studio.

(sqlExpress_19) Nos aparecerá una ventana para conectarnos a nuestra base de datos. Nos aseguraremos de tener seleccionadas estas 3 opciones:

• Tipo de Servidor: Motor de Base deDatos. • Nombre del servidor: Local. • Autentificación: Autentificación de windows

Pulsaremos el botón de “Conectar”

(sqlExpress_20)

Page 31: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

31 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Ahora tendremos dos menus, uno izquierdo (donde se estan las bases de datos) y otro derecho donde ejecutaremos las diferentes sentencias SQL. Iremos al menu de la izquierda, seleccionaremos base de datos, botón derecho del ratón y seleccionamos la opción de “Adjuntar”

(sqlExpress_21) Nos aparecerá una pantalla para elegir y cargar la base de datos. Pulsaremos sobre el botón “Agregar”

(sqlExpress_22)

Page 32: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

32 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Nos aparecerá una pantalla donde iremos a la carpeta donde hayamos guardado nuestra base de datos, en nuestro ejemplo C:\\BaseDeDatos\ Seleccionaremos el archivo AdventureWorksLT2008_Data.mdf y pulsamos el botón de “Aceptar”

(sqlExpress_23)

Page 33: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

33 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Ahora veremos que tenemos seleccionada nuestra base de datos. Pulsaremos el botón de “Aceptar”

(sqlExpress_24)

Page 34: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

34 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Una vez cargada la base de datos, se nos cerrará esta venta y volveremos a la pantalla anterior donde tenemos el listado de todas las bases de datos. Para que nos aparezca nuestra base de datos, seleccionaremos la opción de “Base de Datos”, botón derecho del ratón y seleccionaremos la opción de “Actualizar”.

Ahora ya veremos nuestra base de datos y podremos acceder a sus tablas y registros.

(sqlExpress_25)

Page 35: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L2 – Uso de procedimientos almacenados

Procederemos a explicar los diferentes tipos

En cada tipo se incluirá un pequeño ejemplo

Vamos a trabajar siempre sobre la base de datos “AdventureWorksLT2008”, tabla SalesLT.Customer.

SQL Select

Selecciona un campo o varios de una ta

Recuerde

SELECT "nombreColumna" FROM "nombreTabla"

En la tabla customer queremos

SELECT Phone FROM saleslt

SQL Distinct

Lo empleamos para seleccionar los diferentes campos de una columna de una tabla

Recuerde

SELECT DISTINCT "nombreColumna" FROM "nombreTabla"

Siguiendo el ejemplo anterior, teléfono.

SELECT DISTINCT Phone FROM

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Uso de procedimientos almacenados

Procederemos a explicar los diferentes tipos de instrucciones SQL básicas.

En cada tipo se incluirá un pequeño ejemplo a desarrollar y su solución.

Vamos a trabajar siempre sobre la base de datos “AdventureWorksLT2008”, .

Selecciona un campo o varios de una tabla determinada.

SELECT "nombreColumna" FROM "nombreTabla"

En la tabla customer queremos seleccionar el campo “phone”, la consulta sería:

saleslt.Customer

para seleccionar los diferentes campos de una columna de una tabla

SELECT DISTINCT "nombreColumna" FROM "nombreTabla"

Siguiendo el ejemplo anterior, queremos seleccionar los diferentes número

FROM saleslt.Customer

35 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

de instrucciones SQL básicas.

y su solución.

Vamos a trabajar siempre sobre la base de datos “AdventureWorksLT2008”, con la

seleccionar el campo “phone”, la consulta sería:

para seleccionar los diferentes campos de una columna de una tabla

los diferentes números de

Page 36: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

SQL Where

Lo empleamos para seleccionar los diferentes campos de una o varias columnas que cumplen una determinada condición.

Recuerde

SELECT "nombreColumna" FROM "nombreTabla" WHERE "condición"

Queremos saber el FirstName y Phone de todos los registros cuyo número de teléfono sea igual a 107-555

SELECT FirstName, Phone

FROM saleslt.Customer

WHERE Phone = '107-555

SQL In

Lo empleamos para seleccionar los diferentes registros de una o varias columnas cuya condición se refiere a una misma columna, pero pueden tener diferentes valores.

Recuerde

SELECT "nombreColumna"FROM "nombreTabla"WHERE "nombreColumna" IN (''valor1', ''valor2', ...)

Los valores que se encuentran entre los paréntesis deben ir separados por comas y se pueden poner cuantos se quieran.

Si solo existe un valor entre los paréntesis equivaldría a SQL WHERE

Queremos saber el FirstName y Phone de todos los registros cuyo número de teléfono sea igual a 107-555

SELECT FirstName, Phone

FROM saleslt.Customer

WHERE Phone IN ('107-555

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para seleccionar los diferentes campos de una o varias columnas que cumplen una determinada condición.

SELECT "nombreColumna" FROM "nombreTabla" WHERE "condición"

saber el FirstName y Phone de todos los registros cuyo número de 555-0117

Phone

555-0117'

para seleccionar los diferentes registros de una o varias columnas cuya condición se refiere a una misma columna, pero pueden tener diferentes

SELECT "nombreColumna" FROM "nombreTabla" WHERE "nombreColumna" IN (''valor1', ''valor2',

Los valores que se encuentran entre los paréntesis deben ir separados por comas y se pueden poner cuantos se quieran.

Si solo existe un valor entre los paréntesis equivaldría a SQL WHERE

saber el FirstName y Phone de todos los registros cuyo número de 555-0117 o a 245-555-0173

Phone

555-0117','245-555-0173')

36 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para seleccionar los diferentes campos de una o varias columnas

saber el FirstName y Phone de todos los registros cuyo número de

para seleccionar los diferentes registros de una o varias columnas cuya condición se refiere a una misma columna, pero pueden tener diferentes

Los valores que se encuentran entre los paréntesis deben ir separados por comas y

Si solo existe un valor entre los paréntesis equivaldría a SQL WHERE

saber el FirstName y Phone de todos los registros cuyo número de

Page 37: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

SQL Between

Lo utilizamos para seleccionar los diferentes registros de una o varias columnas cuya condición se encuentre entre dos valores determinados.

Recuerde

SELECT "nombreColumna"FROM "nombreTabla"WHERE "nombreColumna" BETWEEN 'valor1' AND 'valor2'

Queremos saber el FirstName y Phone de todos los registros cuyo número de teléfono se encuentre entre

SELECT FirstName, Phone

FROM saleslt.Customer

WHERE Phone BETWEEN

SQL Like

Lo empleamos para seleccionar los diferentes registros de una o varias columnas cuya condición no sabemos la información exacta.

Su uso común es poniendo “%”, antes, después o en ambos lados del dato que conocemos.

Recuerde

SELECT "nombreColumna"FROM "nombreTabla"WHERE "nombreColumna" LIKE ‘%valor1%’

Queremos saber el FirstName y Phone de todos los registros cuyo número de teléfono empiece por 107, acabe por 173, y contenga 555.

SELECT FirstName, Phone

FROM saleslt.Customer

WHERE Phone LIKE '107%'

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para seleccionar los diferentes registros de una o varias columnas cuya condición se encuentre entre dos valores determinados.

SELECT "nombreColumna" FROM "nombreTabla" WHERE "nombreColumna" BETWEEN 'valor1' AND

saber el FirstName y Phone de todos los registros cuyo número de teléfono se encuentre entre 107-555-0117 y 245-555-0173

Phone

'107-555-0117' AND '245-555-0173'

para seleccionar los diferentes registros de una o varias columnas cuya condición no sabemos la información exacta.

poniendo “%”, antes, después o en ambos lados del dato que

SELECT "nombreColumna" FROM "nombreTabla" WHERE "nombreColumna" LIKE ‘%valor1%’

saber el FirstName y Phone de todos los registros cuyo número de teléfono empiece por 107, acabe por 173, y contenga 555.

Phone

'107%'

37 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para seleccionar los diferentes registros de una o varias columnas

saber el FirstName y Phone de todos los registros cuyo número de

para seleccionar los diferentes registros de una o varias columnas

poniendo “%”, antes, después o en ambos lados del dato que

saber el FirstName y Phone de todos los registros cuyo número de

Page 38: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

SELECT FirstName, Phone

FROM saleslt.Customer

WHERE Phone LIKE '%173'

SELECT FirstName, Phone

FROM saleslt.Customer

WHERE Phone LIKE '%555%'

SQL Order By

Lo utilizamos para seleccionar los diferentes registros de una o varias columnas ordenados por una columna determinada.

Al final del nombre de la columna por la que se quiere o DESC, que es el tipo de ordenación que se mostrará: Ascendente (ASC) o descendente (DESC)

Recuerde

SELECT "nombreColumna"FROM "nombreTabla"ORDER BY "nombreColumna" [ASC, DESC]

Queremos saber el FirstName y Phone de todos los registros ordenados por FirstName

SELECT FirstName, Phone

FROM saleslt.Customer

ORDER BY FirstName

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Phone

'%173'

Phone

'%555%'

para seleccionar los diferentes registros de una o varias columnas por una columna determinada.

Al final del nombre de la columna por la que se quiere ordenar se puede poner ASC o DESC, que es el tipo de ordenación que se mostrará: Ascendente (ASC) o

SELECT "nombreColumna" FROM "nombreTabla" ORDER BY "nombreColumna" [ASC, DESC]

saber el FirstName y Phone de todos los registros ordenados por

Phone

38 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para seleccionar los diferentes registros de una o varias columnas

se puede poner ASC o DESC, que es el tipo de ordenación que se mostrará: Ascendente (ASC) o

saber el FirstName y Phone de todos los registros ordenados por

Page 39: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

SQL Funciones

Dentro de sql existen diferentes funciones las principales

• COUNT: cuenta el número de registro de una columna.• MAX: recoge el número máximo de todos los registros de una columna.• MIN: recoge el número mínimo de todos los registros de una columna.• SUM: suma todos los registros de una columna.

Recuerde

SELECT "función"("nombreColumna")FROM “nombreTabla”

Queremos saber cuántos registros hay de CustomersID

SELECT COUNT(CustomerID

FROM saleslt.Customer

Queremos saber el número máximo de CustomersID

SELECT MAX(CustomerID

FROM saleslt.Customer

Queremos saber el número mínimo de CustomersID

SELECT MIN(CustomerID

FROM saleslt.Customer

Queremos saber la suma de todos los CustomersID

SELECT SUM(CustomerID

FROM saleslt.Customer

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Dentro de sql existen diferentes funciones las principales son:

cuenta el número de registro de una columna. recoge el número máximo de todos los registros de una columna.recoge el número mínimo de todos los registros de una columna.suma todos los registros de una columna.

SELECT "función"("nombreColumna") FROM “nombreTabla”

saber cuántos registros hay de CustomersID

CustomerID)

Customer

saber el número máximo de CustomersID

CustomerID)

Customer

saber el número mínimo de CustomersID

CustomerID)

Customer

saber la suma de todos los CustomersID

CustomerID)

Customer

39 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

recoge el número máximo de todos los registros de una columna. recoge el número mínimo de todos los registros de una columna.

Page 40: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

SQL Group By

Lo utilizamos para seleccionar los diferentes registros de una o varias columnas agruparlos por una columna determinada.

Recuerde

SELECT " columna1"FROM "nombreTabla"GROUP BY "columna1"

Queremos saber todos los Phone agrupados por ellos mismos.

SELECT Phone

FROM saleslt.Customer

GROUP BY Phone

SQL Alias

Los alias los empleamos para dar nombres coloquiales a las tablas y sea más fácil de recordar.

Recuerde

SELECT "aliasTabla"." Columna1"

FROM “nombreTabla” “aliasTabla”

Queremos saber todos los Phone y FirstName de Customers poniendo alias a la tabla.

SELECT CT.Phone, CT.FirstName

FROM saleslt.Customer CT

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para seleccionar los diferentes registros de una o varias columnas agruparlos por una columna determinada.

SELECT " columna1" FROM "nombreTabla" GROUP BY "columna1"

saber todos los Phone agrupados por ellos mismos.

para dar nombres coloquiales a las tablas y sea más fácil

SELECT "aliasTabla"." Columna1"

FROM “nombreTabla” “aliasTabla”

saber todos los Phone y FirstName de Customers poniendo alias a la

FirstName

CT

40 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para seleccionar los diferentes registros de una o varias columnas

para dar nombres coloquiales a las tablas y sea más fácil

saber todos los Phone y FirstName de Customers poniendo alias a la

Page 41: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

SQL Concat

Lo utilizamos para juntar los resultados de una o varias columnas en una sola.

Para esta instrucción de sql existen diferentes tipos de estructura dependiendo en la base de datos en la que se esté trabajando.

• MySQL/Oracle: SELECT CONCAT(columna1, columna 2) FROM nombreWHERE columna2 = 'valor1';

• Oracle: SELECT columna1 || ' ' || columna2 FROM nombreTabla WHERE columna2 = 'valor1'

• SQL Server: SELECT columna1 + ' ' + columna2 FROM nombreTabla WHERE columna2 = 'valor1'

Queremos seleccionar el phone y el firstName de la tabla customer concatenado donde el phone sea igual a

SELECT phone + ' ' + firstname

FROM SalesLT.Customer

WHERE Phone = '170-555

Recuerde

Existen diferentes tipos de estructura en la base de datos

SQL SubString

Lo utilizamos para seleccionar determinados caracteres de una columna.

• SUBSTRING(columna1,pos): selecciona todos los caracteres de “columna1” comenzando con la posición “pos”. Esta sentencia no existe en

• SUBSTRING(columna1,pos,len): selecciona todos los caracteres de “columna1” comenzando con la posición “pos” y de longitud “len”.

Recuerde

SELECT (columna1,pos)

SELECT (columna1,pos

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para juntar los resultados de una o varias columnas en una sola.

ql existen diferentes tipos de estructura dependiendo en la base de datos en la que se esté trabajando.

MySQL/Oracle: SELECT CONCAT(columna1, columna 2) FROM nombreWHERE columna2 = 'valor1'; Oracle: SELECT columna1 || ' ' || columna2 FROM nombreTabla WHERE columna2 = 'valor1' SQL Server: SELECT columna1 + ' ' + columna2 FROM nombreTabla WHERE columna2 = 'valor1'

seleccionar el phone y el firstName de la tabla customer concatenado donde el phone sea igual a '170-555-0127'

phone + ' ' + firstname

555-0127'

xisten diferentes tipos de estructura dependiendo en la base de datos

para seleccionar determinados caracteres de una columna.

(columna1,pos): selecciona todos los caracteres de “columna1” comenzando con la posición “pos”. Esta sentencia no existe en

(columna1,pos,len): selecciona todos los caracteres de “columna1” comenzando con la posición “pos” y de longitud “len”.

(columna1,pos) FROM “nombreTabla”

(columna1,pos,len) FROM “nombreTabla”

41 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

para juntar los resultados de una o varias columnas en una sola.

ql existen diferentes tipos de estructura dependiendo en

MySQL/Oracle: SELECT CONCAT(columna1, columna 2) FROM nombreTabla

Oracle: SELECT columna1 || ' ' || columna2 FROM nombreTabla WHERE

SQL Server: SELECT columna1 + ' ' + columna2 FROM nombreTabla WHERE

seleccionar el phone y el firstName de la tabla customer concatenado

para seleccionar determinados caracteres de una columna.

(columna1,pos): selecciona todos los caracteres de “columna1” comenzando con la posición “pos”. Esta sentencia no existe en SQL Server

(columna1,pos,len): selecciona todos los caracteres de “columna1” comenzando con la posición “pos” y de longitud “len”.

Page 42: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

42 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Queremos seleccionar las dos cifras de un Phone empezando desde la 6.

SELECT SUBSTRING(phone,6,2)

FROM SalesLT.Customer

WHERE Phone = '170-555-0127'

SQL Trim, Rtrim, Ltrim

Lo empleamos para eliminar los espacios en blanco de una o varias columnas.

Para esta instrucción de sql existen diferentes tipos de estructura dependiendo en la base de datos en la que se esté trabajando.

• MySQL: TRIM(), RTRIM(), LTRIM() • Oracle: RTRIM(), LTRIM() • SQL Server: RTRIM(), LTRIM()

LTRIM(columna1): Elimina todos los espacios en blanco del comienzo de la cadena.

RTRIM(columna1): Elimina todos los espacios en blanco del final de la cadena.

TRIM(columna1): Elimina todos los espacios en blanco tanto a derecha como a izquierda.

SELECT TRIM(' Ejemplo ');

SELECT LTRIM(' Ejemplo ');

SELECT RTRIM(' Ejemplo ');

SQL Inner Join

Utilizamos esta instrucción cuando queremos unir los campos de dos o más tablas, siempre y cuando haya concordancia de valores en un campo en común.

Esta instrucción muestra sólo los campos comunes a ambas tablas.

La sintaxis es “INNER JOIN” + “nombreTabla2” + “ON” + “aliasTabla2”.”campoComun” + “=” + “aliasTabla1.campoComun”

Para esta instrucción es muy recomendable poner “alias” a cada tabla.

Page 43: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Recuerde

SELECT "aliasTabla1"." Columna1","aliasTabla1"." Columna2", Columna1"

FROM “nombreTabla

INNER JOIN “aliasTabla2”.”campoComun” = “aliasTabla1.campoComun”

Queremos obtener los sólo los SalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory, recodemos que las tablas se relacionan por el campo ProductCategoryID SELECT PRO.Name, PROCATFROM SalesLT.Product PROINNER JOIN SalesLT.ProductCategory ON PROCAT.ProductCategoryID

SQL Left Join

Utilizamos esta instrucción cuando queremos unir los campos de dossiempre y cuando haya concordancia de valores en un campo en común.

Esta instrucción muestra sóloregistros de la tabla1.

La sintaxis es “INNER JOIN” + “nombreTabla2” + “ON” + “aliasTabla2”.”campoComun” + “=” + “aliasTabla1.campoComun”

Para esta instrucción es muy recomendable poner “

Recuerde

SELECT "aliasTabla1"." Columna1","aliasTabla1"." Columna2", Columna1"

FROM “nombreTabla

LEFT JOIN “nombreTabla2” ON “aliasTabla2”.”campoComun” = “aliasTabla1.campoComun”

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

aliasTabla1"." Columna1", aliasTabla1"." Columna2", "aliasTabla2"." Columna1"

FROM “nombreTabla1” “aliasTabla1”

INNER JOIN “nombreTabla2” ON “aliasTabla2”.”campoComun” = “aliasTabla1.campoComun”

sólo los datos comunes a la columna Name de la tabla SalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory, recodemos que las tablas se relacionan por el campo ProductCategoryID

PROCAT.ModifiedDate PRO

ProductCategory PROCAT ProductCategoryID = PRO.ProductCategoryID

Utilizamos esta instrucción cuando queremos unir los campos de dossiempre y cuando haya concordancia de valores en un campo en común.

sólo los campos comunes a ambas tablas y

La sintaxis es “INNER JOIN” + “nombreTabla2” + “ON” + “aliasTabla2”.”campoComun” + “=” + “aliasTabla1.campoComun”

Para esta instrucción es muy recomendable poner “alias” a cada tabla.

aliasTabla1"." Columna1", aliasTabla1"." Columna2", "aliasTabla2"." Columna1"

FROM “nombreTabla1” “aliasTabla1”

LEFT JOIN “nombreTabla2” ON “aliasTabla2”.”campoComun” = “aliasTabla1.campoComun”

43 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Name de la tabla SalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory, recodemos que las tablas se relacionan por el campo ProductCategoryID.

Utilizamos esta instrucción cuando queremos unir los campos de dos o más tablas, siempre y cuando haya concordancia de valores en un campo en común.

a ambas tablas y todos los

a cada tabla.

Page 44: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Queremos obtener los datosSalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory,además todos los datos de la tabla SalesLT.Product,relacionan por el campo ProductCategoryID. SELECT PRO.Name, PROCATFROM SalesLT.Product PROLEFT JOIN SalesLT.ProductCategory ON PROCAT.ProductCategoryID

SQL Right Join

Utilizamos esta instrucción cuando queremos unir los campos de dossiempre y cuando haya concordancia de valores en un campo en común.

Esta instrucción muestra sóloregistros de la tabla2.

La sintaxis es “INNER JOIN” + “nombreTabla2” + “ON” + “aliasTabla2”.”campoComun” + “=” + “aliasTabla1.campoComun”

Para esta instrucción es muy recomendable poner “

Recuerde

SELECT "aliasTabla1"." Columna1","aliasTabla1"." Columna2", Columna1"

FROM “nombreTabla

RIGHT JOIN “nombreTabla2” ON “aliasTabla2”.”campoComun” = “aliasTabla1.campoComun”

Queremos obtener los datosSalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory,además todos los datos de la tabla SalesLT.ProductCategory,tablas se relacionan por el campo ProductCategoryID. SELECT PRO.Name, PROCATFROM SalesLT.Product PRORIGHT JOIN SalesLT.ProductCategory ON PROCAT.ProductCategoryID

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

los datos comunes de la columna Name de la tabla SalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory,además todos los datos de la tabla SalesLT.Product, recodemos que las tablas se relacionan por el campo ProductCategoryID.

PROCAT.ModifiedDate PRO

ProductCategory PROCAT ProductCategoryID = PRO.ProductCategoryID

Utilizamos esta instrucción cuando queremos unir los campos de dossiempre y cuando haya concordancia de valores en un campo en común.

sólo los campos comunes a ambas tablas y

La sintaxis es “INNER JOIN” + “nombreTabla2” + “ON” + “aliasTabla2”.”campoComun” + “=” + “aliasTabla1.campoComun”

Para esta instrucción es muy recomendable poner “alias” a cada tabla.

aliasTabla1"." Columna1", aliasTabla1"." Columna2", "aliasTabla2"." Columna1"

FROM “nombreTabla1” “aliasTabla1”

RIGHT JOIN “nombreTabla2” ON “aliasTabla2”.”campoComun” = “aliasTabla1.campoComun”

Queremos obtener los datos comunes de la columna Name de la tabla SalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory,además todos los datos de la tabla SalesLT.ProductCategory, recodemos que las tablas se relacionan por el campo ProductCategoryID.

PROCAT.ModifiedDate PRO

ProductCategory PROCAT ProductCategoryID = PRO.ProductCategoryID

44 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Name de la tabla SalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory, y

recodemos que las tablas se

Utilizamos esta instrucción cuando queremos unir los campos de dos o más tablas, siempre y cuando haya concordancia de valores en un campo en común.

a ambas tablas y todos los

” a cada tabla.

Name de la tabla SalesLT.Product y la columna ModifiedDate de la tabla SalesLT.ProductCategory, y

recodemos que las

Page 45: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

L3 – Procedimientos almacenados

Procedimientos Almacenados

Definición

Un procedimiento almacenado (stored procedure) es un conjunto de sentencias sql que devuelven unos resultados y que se guarda en la base

Los procedimientos se ejecutan directamente en el motor de base de datos, encontrándose este en un servidor ajeno, por lo que como se tiene acceso directo a los datos, produce que no se sobrecargue el servidor, como si tuvieras que ejecutarlas sentencias una de tras de otra en nuestra aplicación.

Los procedimientos almacenados se pueden ejecutar desde un servidorsiempre y cuando ambos estén configurados para permitir conexiones remotas.

La sintaxis básica para crear un procedimiento

CREATE PROCEDURE miPrimerProcedimiento

“variables”

AS BEGIN

“consultas”

END

En el apartado de variables, se definen los parámetros que se necesitan para ejecutar las consultas. La estructura de será la siguiente:

“@” + “nombreVariable” + “as” + “ti

Por ejemplo:

@valor1 as nvarchar(50),

ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

rocedimientos almacenados

Procedimientos Almacenados

Un procedimiento almacenado (stored procedure) es un conjunto de sentencias sql que devuelven unos resultados y que se guarda en la base de datos.

Los procedimientos se ejecutan directamente en el motor de base de datos, encontrándose este en un servidor ajeno, por lo que como se tiene acceso directo a los datos, produce que no se sobrecargue el servidor, como si tuvieras que ejecutarlas sentencias una de tras de otra en nuestra aplicación.

Los procedimientos almacenados se pueden ejecutar desde un servidorestén configurados para permitir conexiones remotas.

La sintaxis básica para crear un procedimiento es:

CREATE PROCEDURE miPrimerProcedimiento

En el apartado de variables, se definen los parámetros que se necesitan para ejecutar las consultas. La estructura de será la siguiente:

“@” + “nombreVariable” + “as” + “tipoDeDato”

45 ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Los procedimientos se ejecutan directamente en el motor de base de datos, encontrándose este en un servidor ajeno, por lo que como se tiene acceso directo a los datos, produce que no se sobrecargue el servidor, como si tuvieras que ejecutar

Los procedimientos almacenados se pueden ejecutar desde un servidor a otro estén configurados para permitir conexiones remotas.

En el apartado de variables, se definen los parámetros que se necesitan para

Page 46: ADO.NET Acceso a Datos con Microsoft .Net Framework 4formacion.desarrollando.net/cursosfiles/formacion/curso_755/panet... · ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

46 UNIDAD DIDÁCTICA 1. ADO.NET Acceso a Datos con Microsoft .Net Framework 4.0

Para ejecutar un procedimiento la sintaxis que se debe seguir es la siguiente:

EXEC + “nombreProcedimiento” + “variables”

Para declarar variables dentro de un procedimiento se utiliza la palabra DECLARE + “nombreVariable” + AS + “tipoDato” , y para asignarle un valor SET “nombreVariable” + “=” + “valor”. Véase un ejemplo.

DECLARE @valor as nvarchar(50)

SET @valor = @valor1

En el apartado consultas se podrán poner todo tipo de consultas. A excepción de:

• CREATE VIEW • CREATE DEFAULT • CREATE RULE • CREATE PROCEDURE • CREATE TRIGGER

Un procedimiento almacenado puede devolver un valor de integer, no nulo, para saber el resultado de la ejecución del propio procedimiento. El valor 0 indica que ha finalizado correctamente. Los valores -1 al -99 están reservados por el sistema. Algunos ejemplos de códigos y sus significados son los siguientes:

• -2: error en el tipo de datos. • -4: error de permisos. • -5: error de sintaxis. • -13: base de datos corrupta.