400 likes | 876 Views
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.
E N D
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. • 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.
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 Confidential
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 Confidential
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 Confidential
Esas clases pueden usarse para hacer las operaciones siguientes: • Establecer una conexión entre la aplicación y la fuente de datos usando el objeto Connection. • Ejecutar consultas de datos para recuperar, manipular y actualizar datos usando el objeto Command. • Mover datos entre su DataSet y la base de datos usando el objeto DataAdapter • Ejecutar instrucciones DML desde y hacia la base de datos usando el objeto DataReader (Select, Insert, Update, Delete) Microsoft Confidential
Arquitectura del ADO.NET (1) Microsoft Confidential
Arquitectura del ADO.NET (2) Microsoft Confidential
Proveedores de datos ADO.NET • ODBC (Open DataBaseConnectivity) • OLEDB (ObjectLinking and EmbedingDatabase) • SQL Server Data Provider • Oracle Data Provider (normalmente actualizado desde su Web) Microsoft Confidential
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 Confidential
Los espacios de nombre a utilizar al inicio de cada archivo .cso .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 Confidential
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íausingSystem.Data;usingSystem.Data.SqlClient Microsoft Confidential
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 Confidential
Como usar el objeto Connection • Declarar una variable del tipo Connection • Asignar su valor SqlConnectioncn; cn = new SqlConnection(CadenaDeConexión); Ó SqlConnectioncn =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 Confidential
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 Confidential
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 Server Autenticación de Windows • INTEGRATED SECURITY=True Autenticación de SQL Server- USER ID = Login del Usuario - PASSWORD = Clave de Acceso Microsoft Confidential
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 Servidor Bases de Datos Microsoft Confidential
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 Confidential
Usando la forma tradicional // Crear el objeto Connection SqlConnectioncn = new SqlConnection(“Data Source=C3NFGP1;Initial Catalog=Nomina;IntegratedSecutiry=true”);// Crear el objeto comando para definir que se hará y donde. SqlCommandcmd = new SqlCommand(“SELECT * FROM Empleados”,cn) Microsoft Confidential
Usando un Procedimiento Almacenado // Crear el objeto Connection SqlConnectioncn = new SqlConnection(“Data Source=C3NFGP1;Initial Catalog=Nomina;IntegratedSecutiry=true”);// Crear el objeto comando para definir que se hará y donde. SqlCommandcmd = new SqlCommand();cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = “sp_ObtenerEmpleados”; // Definir los parámetros del procedimiento o consultacmd.Parameters.AddWithValue(“@EmpleadoID”, 23); Microsoft Confidential
Otras clases del Command ExecuteReader()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 Confidential
// Crear el objeto Connection SqlConnectioncn = new SqlConnection(“Data Source=C3NFGP1;Initial Catalog=Nomina;IntegratedSecutiry=true”);// Crear el objeto comando para definir que se hará y donde. SqlCommandcmd = new SqlCommand(“SELECT * FROM Empleados”,cn) // Abrir la conexión Cn.Open(); // Almacenar los resultados en un DataReaderSqlDataReaderdr = cmd.ExecuteReader(); // Cerrar la Conexióncn.Close(); Microsoft Confidential
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 Confidential
Recuerde siempre abrir la conexión antes de ejecutar cualquier método ExcecuteReader, ExecuteNonQuery, ExecuteScalar. Microsoft Confidential
Ejemplo de Uso (Mantenimiento de Datos) Microsoft Confidential
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 Confidential
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 Microsoft Confidential