Acceso a Datos con C#
description
Transcript of Acceso a Datos con C#
![Page 1: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/1.jpg)
Acceso a Datos con C#INFORMACION PARA LOS ESTUDIANTES
13 DE MARZO 2013
![Page 2: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/2.jpg)
Introducción− En Visual Studio tenemos varias
formas de acceso a datos.− La forma más sencilla del acceso a
datos es usando el ADO .NET.− ADO .NET es un conjunto de clases
para que el programador puedan accesar los servicios de datos desde las diferentes bases de datos.
− En VS normalmente podremos accesar bases de datos compatibles con OLEDB y SQL Server.
![Page 3: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/3.jpg)
Microsoft Confidential3
− Se pueden accesar bases de datos relacionales, XML, etc, soportando una variedad de necesidades de desarrollo.
− Todas las clases de acceso a datos se encuentran en la librería System.Data
− Básicamente hablando, ADO .NET provee de una serie de clases que soportan el desarrollo de aplicaciones, permitiendo conectarse a fuentes de datos (Data Source) para recuperar, manipular, y actualizar datos en una base de datos
![Page 4: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/4.jpg)
Microsoft Confidential4
− Las clases de acceso a datos se pueden dividir en tres componentes superiores que son:− Data Provider (Proveedor de datos)− DataSet (Conjunto de datos)− DataTable (Tabla de Datos)
− Los tres componentes principales están localizados en diferentes espacios de nombres.
![Page 5: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/5.jpg)
Microsoft Confidential5
− Las clases DataSet y el DataTable están localizadas en el espacio de nombre System.Data
− Las clases Data Provider están localizadas en diferentes espacios de nombres basado en el proveedor de los datos.
− Data Provider contiene cuatro clases: Connection, Command, DataAdapter y DataReader.
− Los proveedores por defecto son OLEDB y SQLClient.
![Page 6: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/6.jpg)
Microsoft Confidential6
Esas clases pueden usarse para hacer las operaciones siguientes:1. Establecer una conexión entre la aplicación
y la fuente de datos usando el objeto Connection.
2. Ejecutar consultas de datos para recuperar, manipular y actualizar datos usando el objeto Command.
3. Mover datos entre su DataSet y la base de datos usando el objeto DataAdapter
4. Ejecutar instrucciones DML desde y hacia la base de datos usando el objeto DataReader (Select, Insert, Update, Delete)
![Page 7: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/7.jpg)
Microsoft Confidential7
Arquitectura del ADO.NET (1)
![Page 8: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/8.jpg)
Microsoft Confidential8
Arquitectura del ADO.NET (2)
![Page 9: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/9.jpg)
Microsoft Confidential9
Proveedores de datos ADO.NET− ODBC (Open DataBase Connectivity)
− OLEDB (Object Linking and Embeding Database)
− SQL Server Data Provider
− Oracle Data Provider (normalmente actualizado desde su Web)
![Page 10: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/10.jpg)
Microsoft Confidential10
− Esto no implica que no se pueda acceder a otras bases de datos. MySQL, PostGreSQL, Informix, Advantage, etc tiene en sus sitios web proveedores que se pueden descargar e instalar y estarán disponibles para .NET
![Page 11: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/11.jpg)
Microsoft Confidential11
− Los espacios de nombre a utilizar al inicio de cada archivo .cs o .vb que utilice el acceso a datos son los siguientes
− System.Data (Requerido)− System.Data.OleDB− System.Data.SqlClient− System.Data.Odbc− System.Data.OracleClient
![Page 12: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/12.jpg)
Microsoft Confidential12
− En el caso de C# se debe colocar al inicio las instrucciones using que permiten referencial el uso de la librería. Por ejemplo para accesar datos de SQL Server se usaría
using System.Data;using System.Data.SqlClient
![Page 13: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/13.jpg)
Microsoft Confidential13
Objeto Connection− El objeto Connection establece el vínculo
entre la aplicación y la fuente de datos.− Pueden existir más de un objeto Connection
del mismo o diferentes proveedores de datos en la misma aplicación
− Debemos conocer cuál es la cadena de conexión apropiada para el proveedor de datos (ConnectionString)
− El sitio www.connectionstrings.com puede ayudar a encontrar la cadena de conexión respectiva a cada proveedor.
![Page 14: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/14.jpg)
Microsoft Confidential14
Como usar el objeto Connection− Declarar una variable del tipo
Connection− Asignar su valor
SqlConnection cn;cn = new SqlConnection(CadenaDeConexión);
ÓSqlConnection cn =new SqlConnection(CadenaDeConexión);
− Establecer esta declaración en el sitio apropiado para que funcione ya sea para todo un formulario o todo el proyecto.
![Page 15: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/15.jpg)
Microsoft Confidential15
− El objeto Connection tiene varias propiedades y métodos
− El método Open() abre la conexiónEj: cn.Open();
− El método Close() cierra la conexiónEj: cn.Close();
− El método Dispose() elimina el objetoEj: cn.Dispose();
− Normalmente debe abrir y cerrar el objeto connection cuando usa los objetos DataReader
![Page 16: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/16.jpg)
Microsoft Confidential16
Conexión al Sql Server− La cadena de conexión tiene tres a cuatro
parámetros fundamentales.− DATA SOURCE = Nombre del servidor − INITIAL CATALOG = Nombre de la base de
datos.Dependiendo del tipo de seguridad del SQL ServerAutenticación de Windows- INTEGRATED SECURITY=TrueAutenticación de SQL Server- USER ID = Login del Usuario- PASSWORD = Clave de Acceso
![Page 17: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/17.jpg)
Microsoft Confidential17
− El mismo Servidor de SQL Server nos da la información del nombre del Servidor.
− Si usamos la versión Express o una instancia del Servidor normalmente aparecería en la forma Instancia\Servidor
Bases de Datos
Servidor
![Page 18: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/18.jpg)
Microsoft Confidential18
Objeto Command− El objeto Command se usa para
definir y ejecutar comandos hacia la base de datos, tales como un consulta de datos (Select) o una acción (Insert, Delete, Update), o ejecutar un procedimiento almacenado.
− Hay cuatro propiedades principales de un objeto Command− Connection− CommandType− CommandText− Parameters
![Page 19: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/19.jpg)
Microsoft Confidential19
Usando la forma tradicional// Crear el objeto ConnectionSqlConnection cn = new SqlConnection(“Data Source=C3NFGP1;Initial Catalog=Nomina;Integrated Secutiry=true”);
// Crear el objeto comando para definir que se hará y donde.SqlCommand cmd = new SqlCommand(“SELECT * FROM Empleados”,cn)
![Page 20: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/20.jpg)
Microsoft Confidential20
Usando un Procedimiento Almacenado// Crear el objeto ConnectionSqlConnection cn = new SqlConnection(“Data Source=C3NFGP1;Initial Catalog=Nomina;Integrated Secutiry=true”);
// Crear el objeto comando para definir que se hará y donde.SqlCommand cmd = new SqlCommand();cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = “sp_ObtenerEmpleados”;
// Definir los parámetros del procedimiento o consultacmd.Parameters.AddWithValue(“@EmpleadoID”, 23);
![Page 21: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/21.jpg)
Microsoft Confidential21
Otras clases del CommandExecuteReader()Ejecuta un comando que retorna filas tales como un Select. Las filas retornadas deben ser almacenadas en un DataReader.Ej: SELECT * FROM Clientes
ExecuteScalar()Retorna un simple valor desde la base de datosEj: SELECT Max(FacturaNumero) FROM Facturas
ExecuteNonQuery()Ejecuta sentencias SQL que no retornan datos como INSERT, DELETE y UPDATE y SET
![Page 22: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/22.jpg)
Microsoft Confidential22
// Crear el objeto ConnectionSqlConnection cn = new SqlConnection(“Data Source=C3NFGP1;Initial Catalog=Nomina;Integrated Secutiry=true”);
// Crear el objeto comando para definir que se hará y donde.SqlCommand cmd = new SqlCommand(“SELECT * FROM Empleados”,cn)
// Abrir la conexiónCn.Open();// Almacenar los resultados en un DataReaderSqlDataReader dr = cmd.ExecuteReader();
// Cerrar la Conexióncn.Close();
![Page 23: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/23.jpg)
Microsoft Confidential23
Objeto DataReader− Permite almacenar el resultado de un
comando− Es solo de lectura y hacia adelante− Solo puede haber abierto un DataReader a
la vez− El método Read() del objeto DataReader
devuelve como resultado el valor true o false dependiendo si lee o no el registro, además que pone en línea el registro a leer.
− Cuando se usa el Read() la primera vez se lee el primer registro del conjunto de resultados.
− El método Close() cierra el DataReader. Siempre cierre el objeto después de haberlo usado para evitar errores en la ejecución.
![Page 24: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/24.jpg)
Microsoft Confidential24
− Recuerde siempre abrir la conexión antes de ejecutar cualquier método ExcecuteReader, ExecuteNonQuery, ExecuteScalar.
![Page 25: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/25.jpg)
Microsoft Confidential25
Ejemplo de Uso (Mantenimiento de Datos)
![Page 26: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/26.jpg)
Microsoft Confidential26
Uso del DataAdapter− DataAdapter actúa como puente entre
DataSet y un origen de datos para la recuperación y el almacenamiento de datos.
− Para poder actuar como un puente, DataAdapter asigna el método Fill, que modifica los datos de DataSet de forma que coincidan con los del origen de datos, y asigna el método Update, que modifica los datos del origen de datos para hacerlos coincidir con los de DataSet.
− Si se conecta a una base de datos de SQL Server, puede mejorar el rendimiento general utilizando SqlDataAdapter junto con sus objetos asociados SqlCommand y SqlConnection.
![Page 27: Acceso a Datos con C#](https://reader035.fdocuments.es/reader035/viewer/2022062221/56813bf3550346895da52f6e/html5/thumbnails/27.jpg)
Microsoft Confidential27
Métodos del DataAdapter− SqlDataAdapter da = new
SqlDataAdapter(sql, conexión);− Adaptador.Fill(DataSet | DataTable)
Almacena los datos obtenidos en un DataSet o en un DataTable