Download - 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