Please enable JavaScript.
Coggle requires JavaScript to display documents.
Conexión de aplicaciones en C# con bases de datos (Implementación de la…
Conexión de aplicaciones en C# con bases de datos
Proveedores de Datos para .Net
ODBC (Open DataBase Connectivity)
o API acceso ampliamente aceptada
o Usa SQL como lenguaje de acceso de datos
o Interoperatibilidad con amplio rango de SGBD
DAO (Data Access Objects)
o Interfase de programación para bases de datos JET/ISAM (p. ejem. Access)
RDO (Remote Data Objects)
o Estrechamente ligado a ODBC
Orientada a aplicaciones cliente/servidor
OLE DB (Object Linking and Embedding for Databases)
o No restringido a acceso de datos relacionales
o No limitado a SQL como lenguaje de recuperación de datos
o Tecnología desarrollada por Microsoft
o Construido sobre COM (Component Object Model)
o Proporciona una interfase a bajo nivel en C++
ADO (ActiveX Data Objects)
o Ofrece una interfase orientada a objetos
o Proporciona un modelo de programación para OLE DB accesible desde lenguajes diferentes a C++
o Diseñado como modelo conectado, altamente acoplado
o Indicado para arquitecturas cliente/servidor
Componentes de ADO.Net
Connection (conexión)
Proporciona una conexión usada para comunicarse con la fuente de datos. También actúa como Abstract Factory para los objetos command.
Command (órdenes)
Usado para realizar alguna acción en la fuente de datos, como lectura, actualización, o borrado de datos relacionales.
Parameter(parámetro)
Describe un simple parámetro para un command. Un ejemplo común es un parámetro para ser usado en un procedimiento almacenado.
DataReader (lector de datos)
Es una clase usada para procesar eficientemente una lista grande de resultados, un registro a la vez.
DataAdapter (adaptador de datos)
Puente" utilizado para transferir data entre una fuente de datos y un objeto DataSet
DataSets
Los objetos DataSets, son un grupo de clases que describen una simple base de datos relacional en memoria, fueron la estrella del espectáculo en el lanzamiento inicial (1.0) del Microsoft .NET Framework. Las clases forman una jerarquía de contención
Un objeto DataSet representa un esquema (o una base de datos entera o un subconjunto de una). Puede contener las tablas y las relaciones entre esas tablas.
Un objeto DataTable representa una sola tabla en la base de datos. Tiene un nombre, filas, y columnas.
Un objeto DataView "se sienta sobre" un DataTable y ordena los datos (como una cláusula "order by" de SQL) y, si se activa un filtro, filtra los registros (como una cláusula "where" del SQL). Para facilitar estas operaciones se usa un índice en memoria. Todas las DataTables tienen un filtro por defecto, mientras que pueden ser definidos cualquier número de DataViews adicionales, reduciendo la interacción con la base de datos subyacente y mejorando así el desempeño
Un DataColumn representa una columna de la tabla, incluyendo su nombre y tipo.
Un objeto DataRow representa una sola fila en la tabla, y permite leer y actualizar los valores en esa fila, así como la recuperación de cualquier fila que esté relacionada con ella a través de una relación de clave primaria - clave extranjera.
Un DataRowView representa una sola fila de un DataView, la diferencia entre un DataRow y el DataRowView es importante cuando se está interactuando sobre un resultset.
Un DataRelation es una relación entre las tablas, tales como una relación de clave primaria - clave ajena. Esto es útil para permitir la funcionalidad del DataRow de recuperar filas relacionadas.
Un Constraint describe una propiedad de la base de datos que se debe cumplir, como que los valores en una columna de clave primaria deben ser únicos. A medida que los datos son modificados cualquier violación que se presente causará excepciones.
Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades Connection y Command que han sido iniciados. Sin embargo, un DataSet puede guardar su contenido a XML (opcionalmente con un esquema XSD), o llenarse a sí mismo desde un XML, haciendo esto excepcionalmente útil para los servicios web, computación distribuida, y aplicaciones ocasionalmente conectadas desconectados.
Implementación de la conexión a bases de datos
Para listar toda la tabla
Pasos
De la clase SQL client se crea una instancia donde al ConectionString le damos los valores de la conexión a la base de datos, al ser local solo se tiene que poner el nombre de la base de datos,
el tipo de seguridad si es la integrada con Windows o si es autenticación de SQL Server, en caso de ser la del servidor se le deben mandar los parámetros de el nombre de usuario y la contraseña.
Se instancia el dataset, el cual posteriormente debe ser usado en el DataTable que se abrirá
En el dataset se abre la conexión, para hacer un select a la base de datos se instancia un SqlCommand el cual se le quemará la instrucción “select * from tabla” además de usar la conexión.
El sqlcommand se usa para mandar la instrucción a la base de datos mediante parámetro de una instancia de SqlDataAdapter
Posteriormente se procede a llenar el DataTable con el dataset y cerrar la conexión a la base de datos
Para buscar un registro en especifico
Se abre la conexión previamente explicada, en el SQL command se pone lo mismo solo que en vez de “Select * from tabla” lo cual trae todos los registros se le pone un
“Select * from tabla where LlavePrimaria like ‘%{0}%’ lo cual traduce que solo se van a buscar registros donde coincida la llave primaria con el texto ingresado
El resto del código se comporta de manera similar en este caso
Para insertar un registro
Pasos
El comando SqlCommand esta vez con los parámetros “Insert into Tabla Values (Campos)”
Donde el string usado en la búsqueda de un registro en especifico pasa a ser un array unidimensional de strings para llevar los valores de los diferentes campos que tenga esa tabla, si la tabla tiene por ejemplo Nombre, Descripción, Cantidad, Precio éstos pueden ser ubicados dentro de ese array para su posterior inserción a la tabla
El Método para insertar se sugiere sea Bool, de manera que si inserta retorne true y si falla la inserción retorne Falso, esto se hace mediante un condicional que verifica el valor dado previamente por un atributo del SqlCommand llamado ExecuteNonQuery
Entonces si ese valor es mayor que cero se procede a reportar el verdadero, sino el falso.
Para eliminar un registro
Se puede reusar el código anterior teniendo en cuenta que de nuevo cambia el SqlCommand y pasa de ser el código para la inserción de un registro a un “Delete from tabla Where id = {0}” donde se recibirá la variable string la cual contendrá el valor del id a eliminar
Para actualizar un registro
Pasos
Se usa un método similar al de eliminar o insertar solo que en la declaración de este método booleano se reciben mas valores correspondientes a los campos de la tabla afectada
En el SqlCommand se pone el comando “Update tabla set Campo = Nuevo Valor where Id = {2}” de nuevo en los strings se les debe mandar un arreglo de strings en los cuales va a tener el valor del Id del campo a actualizar y los nuevos valores de esos campos
Antes de conectar la aplicación a la base de datos necesitamos estos 2 elementos, es decir la aplicación que tiene el requerimiento de conectarse a la base de datos y la base de datos con los respectivos datos a consultar para este ejemplo se consumir a la base de datos SQL Server local desde el Visual Studio con un proyecto de Windows Forms, como buena práctica se debe crear una nueva clase para la conexión a la base de datos a modo MVC pero en este caso solo el Modelo