27
Acceso a Datos con C# INFORMACION PARA LOS ESTUDIANTES 13 DE MARZO 2013

Acceso a Datos con C#

  • Upload
    ronat

  • View
    58

  • Download
    2

Embed Size (px)

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

Citation preview

Page 1: Acceso  a  Datos  con C#

Acceso a Datos con C#INFORMACION PARA LOS ESTUDIANTES

13 DE MARZO 2013

Page 2: Acceso  a  Datos  con C#

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#

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#

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#

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#

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#

Microsoft Confidential7

Arquitectura del ADO.NET (1)

Page 8: Acceso  a  Datos  con C#

Microsoft Confidential8

Arquitectura del ADO.NET (2)

Page 9: Acceso  a  Datos  con C#

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#

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#

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#

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#

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#

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#

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#

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#

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#

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#

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#

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#

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#

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#

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#

Microsoft Confidential24

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

Page 25: Acceso  a  Datos  con C#

Microsoft Confidential25

Ejemplo de Uso (Mantenimiento de Datos)

Page 26: Acceso  a  Datos  con C#

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#

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