Acceso a Datos con C#

Post on 06-Jan-2016

59 views 2 download

description

13 DE MARZO 2013. Acceso a Datos con C#. INFORMACION PARA LOS ESTUDIANTES. 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. - PowerPoint PPT Presentation

Transcript of Acceso a Datos con C#

Acceso a Datos con C#INFORMACION PARA LOS ESTUDIANTES

13 DE MARZO 2013

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.

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

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.

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.

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)

Microsoft Confidential7

Arquitectura del ADO.NET (1)

Microsoft Confidential8

Arquitectura del ADO.NET (2)

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)

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

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

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

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.

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.

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

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

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

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

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)

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);

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

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();

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.

Microsoft Confidential24

− Recuerde siempre abrir la conexión antes de ejecutar cualquier método ExcecuteReader, ExecuteNonQuery, ExecuteScalar.

Microsoft Confidential25

Ejemplo de Uso (Mantenimiento de Datos)

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.

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