ADO.NET Acceso a Datos con Microsoft .Net Framework...
-
Upload
hoangquynh -
Category
Documents
-
view
225 -
download
1
Transcript of ADO.NET Acceso a Datos con Microsoft .Net Framework...
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.
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.
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
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.
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
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.
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.
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.
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)
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
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
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.
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
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
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
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
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
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.
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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
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
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.
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
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”.
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.
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.
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
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
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.